From: tanmay@codeaurora.org
To: Stephen Boyd <swboyd@chromium.org>
Cc: devicetree@vger.kernel.org, freedreno@lists.freedesktop.org,
linux-arm-msm@vger.kernel.org, seanpaul@chromium.org,
Chandan Uddaraju <chandanu@codeaurora.org>,
robdclark@gmail.com, abhinavk@codeaurora.org,
nganji@codeaurora.org, jsanka@codeaurora.org,
aravindh@codeaurora.org, hoegsberg@google.com,
dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org,
Vara Reddy <varar@codeaurora.org>
Subject: Re: [DPU PATCH v5 1/5] dt-bindings: msm/dp: add bindings of DP/DP-PLL driver for Snapdragon
Date: Mon, 08 Jun 2020 17:15:12 -0700 [thread overview]
Message-ID: <7bc8133dd6a0ec35478b4fc7c4ff10ca@codeaurora.org> (raw)
In-Reply-To: <158768527020.135303.4794713080581005908@swboyd.mtv.corp.google.com>
Thanks for reviews Stephen. Please find my comments according to new
design.
On 2020-04-23 16:41, Stephen Boyd wrote:
> Quoting Tanmay Shah (2020-03-31 17:30:27)
>> diff --git
>> a/Documentation/devicetree/bindings/display/msm/dp-sc7180.yaml
>> b/Documentation/devicetree/bindings/display/msm/dp-sc7180.yaml
>> new file mode 100644
>> index 0000000..761a01d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/msm/dp-sc7180.yaml
>> @@ -0,0 +1,325 @@
>> +# SPDX-License-Identifier: GPL-2.0-only
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/msm/dp-sc7180.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Description of Qualcomm Display Port dt properties.
>
> This title should be something like
>
> "Qualcomm Display Port Controller"
>
Changed title as suggested.
>> +
>> +maintainers:
>> + - Chandan Uddaraju <chandanu@codeaurora.org>
>> + - Vara Reddy <varar@codeaurora.org>
>> +
>> +description: |
>> + Device tree bindings for MSM Display Port which supports DP host
>> controllers
>> + that are compatible with VESA Display Port interface specification.
>> +
>> +properties:
>> + "msm_dp":
>> + type: object
>> + description: |
>> + Node containing Display port register address bases, clocks,
>> power
>> supplies.
>> +
>> + properties:
>> + compatible:
>> + items:
>> + - const: qcom,dp-display
>> +
>> + cell-index:
>> + description: Specifies the controller instance.
>> +
>> + reg:
>> + description: Physical base address and length of controller's
>> registers.
>> +
>> + reg-names:
>> + description: |
>> + Names for different register regions defined above. The
>> required
>> region
>> + is mentioned below.
>> + items:
>> + - const: dp_ahb
>> + - const: dp_aux
>> + - const: dp_link
>> + - const: dp_p0
>> + - const: dp_phy
>> + - const: dp_ln_tx0
>> + - const: dp_ln_tx1
>> + - const: afprom_physical
>> + - const: dp_pll
>> + - const: usb3_dp_com
>> + - const: hdcp_physical
>> +
>> + interrupts:
>> + description: The interrupt signal from the DP block.
>> +
>> + clocks:
>> + description: List of clock specifiers for clocks needed by the
>> device.
>> +
>> + clock-names:
>> + description: |
>> + Device clock names in the same order as mentioned in clocks
>> property.
>> + The required clocks are mentioned below.
>> + items:
>> + - const: core_aux_clk
>> + - const: core_ref_clk_src
>> + - const: core_usb_ref_clk
>> + - const: core_usb_cfg_ahb_clk
>> + - const: core_usb_pipe_clk
>> + - const: ctrl_link_clk
>> + - const: ctrl_link_iface_clk
>> + - const: ctrl_pixel_clk
>> + - const: crypto_clk
>> + - const: pixel_clk_rcg
>> +
>> + pll-node:
>> + description: phandle to DP PLL node.
>> +
>> + vdda-1p2-supply:
>> + description: phandle to vdda 1.2V regulator node.
>> +
>> + vdda-0p9-supply:
>> + description: phandle to vdda 0.9V regulator node.
>> +
>> + aux-cfg0-settings:
>> + description: |
>> + Specifies the DP AUX configuration 0 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg1-settings:
>> + description: |
>> + Specifies the DP AUX configuration 1 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg2-settings:
>> + description: |
>> + Specifies the DP AUX configuration 2 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg3-settings:
>> + description: |
>> + Specifies the DP AUX configuration 3 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg4-settings:
>> + description: |
>> + Specifies the DP AUX configuration 4 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg5-settings:
>> + description: |
>> + Specifies the DP AUX configuration 5 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg6-settings:
>> + description: |
>> + Specifies the DP AUX configuration 6 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg7-settings:
>> + description: |
>> + Specifies the DP AUX configuration 7 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg8-settings:
>> + description: |
>> + Specifies the DP AUX configuration 8 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + aux-cfg9-settings:
>> + description: |
>> + Specifies the DP AUX configuration 9 settings.
>> + The first entry in this array corresponds to the register
>> offset
>> + within DP AUX, while the remaining entries indicate the
>> + programmable values.
>> +
>> + max-pclk-frequency-khz:
>> + description: Maximum displayport pixel clock supported for the
>> chipset.
>> +
>> + data-lanes:
>> + description: Maximum number of lanes that can be used for
>> Display
>> port.
>
> This should be an array of cells, not a single cell indicating the
> number of lanes.
>
Done. Now data-lanes is array of integers and size of array represents
maximum number of lanes supported.
>> +
>> + usbplug-cc-gpio:
>> + maxItems: 1
>> + description: Specifies the usbplug orientation gpio.
>> +
>> + aux-en-gpio:
>> + maxItems: 1
>> + description: Specifies the aux-channel enable gpio.
>> +
>> + aux-sel-gpio:
>> + maxItems: 1
>> + description: Specifies the sux-channel select gpio.
>> +
>> + ports:
>> + description: |
>> + Contains display port controller endpoint subnode.
>> + remote-endpoint: |
>> + For port@0, set to phandle of the connected panel/bridge's
>> + input endpoint. For port@1, set to the DPU interface
>> output.
>> + Documentation/devicetree/bindings/graph.txt and
>> +
>> Documentation/devicetree/bindings/media/video-interfaces.txt.
>> +
>> + "dp_pll":
>> + type: object
>> + description: Node contains properties of Display port pll and
>> phy
>> driver.
>> +
>> + properties:
>> + compatible:
>> + items:
>> + - const: qcom,dp-pll-10nm
>> +
>> + cell-index:
>> + description: Specifies the controller instance.
>> +
>> + reg:
>> + description: Physical base address and length of DP phy and
>> pll
>> registers.
>> +
>> + reg-names:
>> + description: |
>> + Names for different register regions defined above. The
>> required region
>> + is mentioned below.
>> + items:
>> + - const: pll_base
>> + - const: phy_base
>> + - const: ln_tx0_base
>> + - const: ln_tx1_base
>> + - const: gdsc_base
>> +
>> + clocks:
>> + description: List of clock specifiers for clocks needed by
>> the
>> device.
>> +
>> + clock-names:
>> + description: |
>> + Device clock names in the same order as mentioned in
>> clocks
>> property.
>> + The required clocks are mentioned below.
>> + items:
>> + - const: iface
>> + - const: ref
>> + - const: cfg_ahb
>> + - const: pipe
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> + #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
>> + #include <dt-bindings/clock/qcom,gcc-sdm845.h>
>> + #include <dt-bindings/clock/qcom,rpmh.h>
>> + #include <dt-bindings/gpio/gpio.h>
>> + msm_dp: displayport-controller@ae90000{
>> + cell-index = <0>;
>> + compatible = "qcom,dp-display";
>> + reg = <0 0xae90000 0 0x200>,
>> + <0 0xae90200 0 0x200>,
>> + <0 0xae90400 0 0xc00>,
>> + <0 0xae91000 0 0x400>,
>> + <0 0x88eaa00 0 0x200>,
>> + <0 0x88ea200 0 0x200>,
>> + <0 0x88ea600 0 0x200>,
>> + <0 0x780000 0 0x6228>,
>> + <0 0x088ea000 0 0x40>,
>> + <0 0x88e8000 0 0x20>,
>> + <0 0x0aee1000 0 0x034>;
>
> This needs to be split up into at least two nodes. Any address above
> that starts in 88e needs to be put into a new node underneath the qmp
> phy. That is the "DP PHY" that lives in the power domain of the USB+DP
> combo phy. The qfprom_physical reg property should be removed from here
> and this binding should use the nvmem binding to reach into the qfprom
> to read out things (I guess there's some sort of HDCP key in the
> qfprom?).
>
> After that I don't know why there are so many different reg properties
> for the DP controller here and why it needs to be split up. It looks
> like we should just map the register space from 0xae90000 up to
> 0xae91400 as one big register region and have the driver figure out how
> to operate on top of that. If it changes between SoC versions then we
> should have a more specific compatible that tells us what registers are
> in what place.
>
Done. Only one register region is specified here now in new bindings
i.e. dp_controller
starting from 0xae90000 upto 0xae91400. Removed rest of the module
offsets.
Driver will access each module using offset as required. Also PHY and
USB3 DPCOM
register bases are hard-coded in driver. Removed redundant qfprom and
hdcp registers from bindings.
>> + reg-names = "dp_ahb", "dp_aux", "dp_link",
>> + "dp_p0", "dp_phy", "dp_ln_tx0", "dp_ln_tx1",
>> + "qfprom_physical", "dp_pll",
>> + "usb3_dp_com", "hdcp_physical";
>> +
>> + interrupt-parent = <&display_subsystem>;
>> + interrupts = <12 0>;
>> +
>> + clocks = <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
>> + <&rpmhcc RPMH_CXO_CLK>,
>> + <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
>> + <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
>> + <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>,
>> + <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
>> + <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
>> + <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>,
>> + <&dispcc DISP_CC_MDSS_DP_CRYPTO_CLK>,
>> + <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
>> + clock-names = "core_aux_clk", "core_ref_clk_src",
>> + "core_usb_ref_clk", "core_usb_cfg_ahb_clk",
>> + "core_usb_pipe_clk", "ctrl_link_clk",
>> + "ctrl_link_iface_clk", "ctrl_pixel_clk",
>> + "crypto_clk", "pixel_clk_rcg";
>> +
>> + pll-node = <&dp_pll>;
>
> If the DP PLL and DP controller need to be controlled from two software
> entities, it may make sense to just combine that DP PLL into the
> controller node and have this node be a clk provider. The pll-node
> property is pretty ugly and should be removed.
>
Done. Removed PLL as separate node and combined PLL as module of DP
driver.
Removed pll-node property as well.
>> + vdda-1p2-supply = <&vreg_l3c_1p2>;
>> + vdda-0p9-supply = <&vreg_l4a_0p8>;
>> +
>> + aux-cfg0-settings = [20 00];
>> + aux-cfg1-settings = [24 13 23 1d];
>> + aux-cfg2-settings = [28 24];
>> + aux-cfg3-settings = [2c 00];
>> + aux-cfg4-settings = [30 0a];
>> + aux-cfg5-settings = [34 26];
>> + aux-cfg6-settings = [38 0a];
>> + aux-cfg7-settings = [3c 03];
>> + aux-cfg8-settings = [40 bb];
>> + aux-cfg9-settings = [44 03];
>
> This pile of properties is board specific configuration tuning or
> something? Can this go into the driver? Or can it be made more human
> readable? I seem to recall that the USB phy had similar properties and
> we made them into human readable properties when board integrators
> needed to change them. The easiest approach there is to put everything
> in the driver for now and then when something has to change for a board
> it gets punted out to the DT and that overrides the "default" settings
> that are used in the driver.
>
Made aux-cfg[0-9]-settingsproperties optional in bindings.
Added default configurations in driver and using them if these
properties
are not mentioned in dts.
>> +
>> + max-pclk-frequency-khz = <67500>;
>
> What is this? Why isn't this in the driver?
>
Done. Removed this property from bindings and setting default value in
driver.
>> + data-lanes = <2>;
>> +
>> + aux-en-gpio = <&msmgpio 55 1>;
>> + aux-sel-gpio = <&msmgpio 110 1>;
>> + usbplug-cc-gpio = <&msmgpio 90 1>;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> + dp_in: endpoint {
>> + remote-endpoint = <&dpu_intf0_out>;
>> + };
>> + };
>> +
>> + port@1 {
>> + reg = <1>;
>> + dp_out: endpoint {
>> + };
>> + };
>> + };
>> + };
>> +
>> + dp_pll: dp-pll@088ea000 {
>> + compatible = "qcom,dp-pll-10nm";
>> + label = "DP PLL";
>> + cell-index = <0>;
>> + #clock-cells = <1>;
>> +
>> + reg = <0 0x088ea000 0 0x200>,
>> + <0 0x088eaa00 0 0x200>,
>> + <0 0x088ea200 0 0x200>,
>> + <0 0x088ea600 0 0x200>,
>> + <0 0x08803000 0 0x8>;
>> + reg-names = "pll_base", "phy_base", "ln_tx0_base",
>> + "ln_tx1_base", "gdsc_base";
>
> I guess the DP_PLL lives inside the qmp combo phy? That would match how
> the USB phy binding has been done there. This whole node should be
> combined with the DP phy node that will be placed as a child of the qmp
> phy wrapper (i.e. qcom,sc7180-qmp-usb3-phy compatible node). Might as
> well change that compatible from qcom,sc7180-qmp-usb3-phy to be
> qcom,sc7180-qmp-usb3-dp-phy too so that it can create the DP phy bits
> too.
>
Done. Removed whole dp_pll node from here and added PLL as module of DP
driver.
This required hard coding of few register bases in driver for now.
>> +
>> + clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
>> + <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
>> + <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
>> + <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
>> + clock-names = "iface_clk", "ref_clk",
>> + "cfg_ahb_clk", "pipe_clk";
>> + };
>> +
>> diff --git a/Documentation/devicetree/bindings/display/msm/dpu.txt
>> b/Documentation/devicetree/bindings/display/msm/dpu.txt
>> index 551ae26..7e99e45 100644
>> --- a/Documentation/devicetree/bindings/display/msm/dpu.txt
>> +++ b/Documentation/devicetree/bindings/display/msm/dpu.txt
>> @@ -63,8 +63,9 @@ Required properties:
>> Documentation/devicetree/bindings/graph.txt
>> Documentation/devicetree/bindings/media/video-interfaces.txt
>>
>> - Port 0 -> DPU_INTF1 (DSI1)
>> - Port 1 -> DPU_INTF2 (DSI2)
>> + Port 0 -> DPU_INTF0 (DP)
>> + Port 1 -> DPU_INTF1 (DSI1)
>> + Port 2 -> DPU_INTF2 (DSI2)
>
> DP should come last so that the port mapping doesn't have to change.
>
Done. Reverted Port mapping to old one i.e. Port0->DSI1, Port1->DSI2 and
Added Port2->DP mapping.
>>
>> Optional properties:
>> - assigned-clocks: list of clock specifiers for clocks needing rate
>> assignment
next prev parent reply other threads:[~2020-06-09 0:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-01 0:30 [DPU PATCH v5 0/5] Add support for DisplayPort driver on SnapDragon Tanmay Shah
2020-04-01 0:30 ` [DPU PATCH v5 1/5] dt-bindings: msm/dp: add bindings of DP/DP-PLL driver for Snapdragon Tanmay Shah
2020-04-01 5:49 ` Sam Ravnborg
2020-04-07 4:23 ` tanmay
[not found] ` <0c151ac7b2a7e0c9b21452c8bde3e21d@codeaurora.org>
2020-06-09 0:13 ` tanmay
2020-04-23 23:41 ` Stephen Boyd
2020-06-09 0:15 ` tanmay [this message]
2020-04-01 0:30 ` [DPU PATCH v5 2/5] drm: add constant N value in helper file Tanmay Shah
2020-04-23 23:41 ` Stephen Boyd
2020-06-09 0:15 ` tanmay
2020-04-01 0:30 ` [DPU PATCH v5 3/5] drm/msm/dp: add displayPort driver support Tanmay Shah
2020-04-01 0:30 ` [DPU PATCH v5 4/5] drm/msm/dp: add support for DP PLL driver Tanmay Shah
2020-04-24 0:26 ` Stephen Boyd
2020-06-09 0:16 ` [Freedreno] " tanmay
2020-04-01 0:30 ` [DPU PATCH v5 5/5] drm/msm/dpu: add display port support in DPU Tanmay Shah
2020-04-24 17:13 ` [DPU PATCH v5 0/5] Add support for DisplayPort driver on SnapDragon Sean Paul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7bc8133dd6a0ec35478b4fc7c4ff10ca@codeaurora.org \
--to=tanmay@codeaurora.org \
--cc=abhinavk@codeaurora.org \
--cc=aravindh@codeaurora.org \
--cc=chandanu@codeaurora.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=hoegsberg@google.com \
--cc=jsanka@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=nganji@codeaurora.org \
--cc=robdclark@gmail.com \
--cc=seanpaul@chromium.org \
--cc=swboyd@chromium.org \
--cc=varar@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).