* [PATCH 0/9] drm/msm: Fix issues with DT bindings @ 2016-05-03 10:57 Archit Taneja 2016-05-03 10:57 ` [PATCH 1/9] drm/msm: Get mdss components via parsing ports Archit Taneja ` (8 more replies) 0 siblings, 9 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel Currently, none of the upstream Qualcomm DT files have the display device nodes populated, even when the DT binding documents are upstream. I am not aware of all the issues with the bindings which has prevented it from getting merged, but 2 properties "connectors" (maintains a list of all the external interfaces (DSI, HDMI etc)) and "gpus" (list of GPU devices) seem like the ones that can't be merged. This patch set aligns with the graph bindings to describe the connection between the display controller block (MDP) and the external encoder interfaces. This is similar to the graph bindings used by some of the drivers (imx, rockchip), but not exactly the same. These drivers expect a top level "display-subsytem" DT node which lists down the display interface ports to be used. Our implementation just parses the interface ports in the MDP node as is, and add the components that are needed. I've Cc-ed Heiko and Philipp in case they had any comments on this. The 'gpu' property is removed in a hack-ish way. The driver contains a list of all the compatible strings for gpus, and searches the entire OF firmware for a matching node. Once we know what's the right way to link the gpu and display nodes together (if needed at all) we can add the required binding. The rest of the changes are minor cleanups and fixes to prepare the driver and binding documents before we really start adding the display nodes. Archit Taneja (9): drm/msm: Get mdss components via parsing ports drm/msm: Drop the gpu binding drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing dt-bindings: msm/mdp: Remove connector and gpu bindings dt-bindings: msm/dsi: Some binding doc cleanups drm/msm/dsi: Modify port parsing drm/msm/dsi: Use generic PHY bindings dt-bindings: msm/dsi: Modify port and PHY bindings dt-bindings: msm/dsi: Add assigned clocks bindings .../devicetree/bindings/display/msm/dsi.txt | 79 +++++++++++++++------ .../devicetree/bindings/display/msm/mdp.txt | 75 ++++++++++++++++++-- drivers/gpu/drm/msm/dsi/dsi.c | 2 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 10 +-- drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 8 ++- drivers/gpu/drm/msm/msm_drv.c | 80 +++++++++++++++++++--- 6 files changed, 213 insertions(+), 41 deletions(-) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH 1/9] drm/msm: Get mdss components via parsing ports 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 10:57 ` [PATCH 2/9] drm/msm: Drop the gpu binding Archit Taneja ` (7 subsequent siblings) 8 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel The driver currently identifies all the mdss components it needs by parsing a phandle list from the 'connectors' DT property. Instead of this, describe a list of ports that the MDP hardware provides to the external world. These ports are linked to external encoder interfaces such as DSI, HDMI in MDSS. These are also the subcomponent devices that we need add. This description of ports complies with the generic graph bindings. In MDP4, the LVDS port's output connects directly to the LVDS panel. In this case, we don't try to add it as a component. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/msm_drv.c | 54 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 955ddfd..30b8f3b 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1087,6 +1087,58 @@ static int add_components(struct device *dev, struct component_match **matchptr, return 0; } +/* + * Identify what components need to be added by parsing what the endpoints in + * our output ports are we. In the case of LVDS, there is no external component + * that we need to add since it's a part of MDP itself. + */ +static int add_mdss_components(struct device *dev, + struct component_match **matchptr) +{ + struct device_node *np = dev->of_node; + struct device_node *ep_node; + + for_each_endpoint_of_node(np, ep_node) { + struct device_node *intf; + struct of_endpoint ep; + int ret; + + ret = of_graph_parse_endpoint(ep_node, &ep); + if (ret) { + dev_err(dev, "unable to parse port endpoint\n"); + of_node_put(ep_node); + return ret; + } + + /* + * The LCDC/LVDS port on MDP4 is a speacial case where the + * remote-endpoint isn't a component that we need to add + */ + if (of_device_is_compatible(np, "qcom,mdp4") && ep.port == 0) { + of_node_put(ep_node); + continue; + } + + /* + * It's okay if some of the ports don't have a remote endpoint + * specified. It just means that the port isn't connected to + * any external interface. + */ + intf = of_graph_get_remote_port_parent(ep_node); + if (!intf) { + of_node_put(ep_node); + continue; + } + + component_match_add(dev, matchptr, compare_of, intf); + + of_node_put(intf); + of_node_put(ep_node); + } + + return 0; +} + static int msm_drm_bind(struct device *dev) { return msm_drm_init(dev, &msm_driver); @@ -1110,7 +1162,7 @@ static int msm_pdev_probe(struct platform_device *pdev) { struct component_match *match = NULL; - add_components(&pdev->dev, &match, "connectors"); + add_mdss_components(&pdev->dev, &match); add_components(&pdev->dev, &match, "gpus"); pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH 2/9] drm/msm: Drop the gpu binding 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja 2016-05-03 10:57 ` [PATCH 1/9] drm/msm: Get mdss components via parsing ports Archit Taneja @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 12:42 ` Rob Herring 2016-05-03 10:57 ` [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing Archit Taneja ` (6 subsequent siblings) 8 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel The driver currently identifies the GPU components it needs by parsing a phandle list from the 'gpus' DT property. This isn't the right binding to go with. So, for now, just search all device nodes and find the gpu node we need by parsing a list of compatible strings. Once we know how to link the kms and gpu drivers, we'll drop this method and use the correct binding. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/msm_drv.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 30b8f3b..f717a69 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1068,20 +1068,32 @@ static int compare_of(struct device *dev, void *data) return dev->of_node == data; } -static int add_components(struct device *dev, struct component_match **matchptr, - const char *name) +static const char * const msm_compatible_gpus[] = { + "qcom,adreno-3xx", + "qcom,kgsl-3d0", +}; + +/* + * We don't know what's the best binding to link the gpu with the drm device. + * Fow now, we just hunt for all the possible gpus that we support, and add them + * as components. + */ +static int add_gpu_components(struct device *dev, + struct component_match **matchptr) { - struct device_node *np = dev->of_node; unsigned i; - for (i = 0; ; i++) { + for (i = 0; i < ARRAY_SIZE(msm_compatible_gpus); i++) { struct device_node *node; - node = of_parse_phandle(np, name, i); + node = of_find_compatible_node(NULL, NULL, + msm_compatible_gpus[i]); if (!node) - break; + continue; component_match_add(dev, matchptr, compare_of, node); + + of_node_put(node); } return 0; @@ -1163,7 +1175,7 @@ static int msm_pdev_probe(struct platform_device *pdev) struct component_match *match = NULL; add_mdss_components(&pdev->dev, &match); - add_components(&pdev->dev, &match, "gpus"); + add_gpu_components(&pdev->dev, &match); pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); return component_master_add_with_match(&pdev->dev, &msm_drm_ops, match); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 2/9] drm/msm: Drop the gpu binding 2016-05-03 10:57 ` [PATCH 2/9] drm/msm: Drop the gpu binding Archit Taneja @ 2016-05-03 12:42 ` Rob Herring 2016-05-04 6:45 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Rob Herring @ 2016-05-03 12:42 UTC (permalink / raw) To: Archit Taneja Cc: Rob Clark, linux-arm-msm, dri-devel, Heiko Stübner, Philipp Zabel, devicetree On Tue, May 3, 2016 at 5:57 AM, Archit Taneja <architt@codeaurora.org> wrote: > The driver currently identifies the GPU components it needs by parsing > a phandle list from the 'gpus' DT property. > > This isn't the right binding to go with. So, for now, just search all > device nodes and find the gpu node we need by parsing a list of > compatible strings. > > Once we know how to link the kms and gpu drivers, we'll drop this method > and use the correct binding. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > drivers/gpu/drm/msm/msm_drv.c | 26 +++++++++++++++++++------- > 1 file changed, 19 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c > index 30b8f3b..f717a69 100644 > --- a/drivers/gpu/drm/msm/msm_drv.c > +++ b/drivers/gpu/drm/msm/msm_drv.c > @@ -1068,20 +1068,32 @@ static int compare_of(struct device *dev, void *data) > return dev->of_node == data; > } > > -static int add_components(struct device *dev, struct component_match **matchptr, > - const char *name) > +static const char * const msm_compatible_gpus[] = { > + "qcom,adreno-3xx", > + "qcom,kgsl-3d0", > +}; > + > +/* > + * We don't know what's the best binding to link the gpu with the drm device. > + * Fow now, we just hunt for all the possible gpus that we support, and add them > + * as components. > + */ > +static int add_gpu_components(struct device *dev, > + struct component_match **matchptr) > { > - struct device_node *np = dev->of_node; > unsigned i; > > - for (i = 0; ; i++) { > + for (i = 0; i < ARRAY_SIZE(msm_compatible_gpus); i++) { You can use of_find_matching_node() here instead of a loop. Rob ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH 2/9] drm/msm: Drop the gpu binding 2016-05-03 12:42 ` Rob Herring @ 2016-05-04 6:45 ` Archit Taneja 0 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-04 6:45 UTC (permalink / raw) To: Rob Herring Cc: Rob Clark, linux-arm-msm, dri-devel, Heiko Stübner, Philipp Zabel, devicetree On 05/03/2016 06:12 PM, Rob Herring wrote: > On Tue, May 3, 2016 at 5:57 AM, Archit Taneja <architt@codeaurora.org> wrote: >> The driver currently identifies the GPU components it needs by parsing >> a phandle list from the 'gpus' DT property. >> >> This isn't the right binding to go with. So, for now, just search all >> device nodes and find the gpu node we need by parsing a list of >> compatible strings. >> >> Once we know how to link the kms and gpu drivers, we'll drop this method >> and use the correct binding. >> >> Signed-off-by: Archit Taneja <architt@codeaurora.org> >> --- >> drivers/gpu/drm/msm/msm_drv.c | 26 +++++++++++++++++++------- >> 1 file changed, 19 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c >> index 30b8f3b..f717a69 100644 >> --- a/drivers/gpu/drm/msm/msm_drv.c >> +++ b/drivers/gpu/drm/msm/msm_drv.c >> @@ -1068,20 +1068,32 @@ static int compare_of(struct device *dev, void *data) >> return dev->of_node == data; >> } >> >> -static int add_components(struct device *dev, struct component_match **matchptr, >> - const char *name) >> +static const char * const msm_compatible_gpus[] = { >> + "qcom,adreno-3xx", >> + "qcom,kgsl-3d0", >> +}; >> + >> +/* >> + * We don't know what's the best binding to link the gpu with the drm device. >> + * Fow now, we just hunt for all the possible gpus that we support, and add them >> + * as components. >> + */ >> +static int add_gpu_components(struct device *dev, >> + struct component_match **matchptr) >> { >> - struct device_node *np = dev->of_node; >> unsigned i; >> >> - for (i = 0; ; i++) { >> + for (i = 0; i < ARRAY_SIZE(msm_compatible_gpus); i++) { > > You can use of_find_matching_node() here instead of a loop. I'll switch to that. Thanks, Archit -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja 2016-05-03 10:57 ` [PATCH 1/9] drm/msm: Get mdss components via parsing ports Archit Taneja 2016-05-03 10:57 ` [PATCH 2/9] drm/msm: Drop the gpu binding Archit Taneja @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 13:50 ` Philipp Zabel 2016-05-03 10:57 ` [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings Archit Taneja ` (5 subsequent siblings) 8 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel The LCDC port is the first in the list of the output ports in MDP4. Mention this explicitly in the driver. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c index f8e0cea..cd129f4 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c @@ -263,9 +263,13 @@ static struct device_node *mdp4_detect_lcdc_panel(struct drm_device *dev) struct device_node *endpoint, *panel_node; struct device_node *np = dev->dev->of_node; - endpoint = of_graph_get_next_endpoint(np, NULL); + /* + * LCDC/LVDS is the first port described in the list of ports in the + * MDP4 DT node. + */ + endpoint = of_graph_get_endpoint_by_regs(np, 0, -1); if (!endpoint) { - DBG("no endpoint in MDP4 to fetch LVDS panel\n"); + DBG("no LVDS panel remote endpoint\n"); return NULL; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing 2016-05-03 10:57 ` [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing Archit Taneja @ 2016-05-03 13:50 ` Philipp Zabel 0 siblings, 0 replies; 38+ messages in thread From: Philipp Zabel @ 2016-05-03 13:50 UTC (permalink / raw) To: Archit Taneja; +Cc: devicetree, linux-arm-msm, dri-devel Am Dienstag, den 03.05.2016, 16:27 +0530 schrieb Archit Taneja: > The LCDC port is the first in the list of the output ports in MDP4. > Mention this explicitly in the driver. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c > index f8e0cea..cd129f4 100644 > --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c > +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c > @@ -263,9 +263,13 @@ static struct device_node *mdp4_detect_lcdc_panel(struct drm_device *dev) > struct device_node *endpoint, *panel_node; > struct device_node *np = dev->dev->of_node; > > - endpoint = of_graph_get_next_endpoint(np, NULL); > + /* > + * LCDC/LVDS is the first port described in the list of ports in the > + * MDP4 DT node. > + */ > + endpoint = of_graph_get_endpoint_by_regs(np, 0, -1); > if (!endpoint) { > - DBG("no endpoint in MDP4 to fetch LVDS panel\n"); > + DBG("no LVDS panel remote endpoint\n"); > return NULL; > } Oh nice, I wasn't aware of of_graph_get_endpoint_by_regs(). We should switch imx-drm and exynos to use it, too. regards Philipp _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja ` (2 preceding siblings ...) 2016-05-03 10:57 ` [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing Archit Taneja @ 2016-05-03 10:57 ` Archit Taneja 2016-05-04 13:38 ` Rob Herring [not found] ` <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> ` (4 subsequent siblings) 8 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The MDP DT node now contains a list of ports that describe how it connects to external encoder interfaces like DSI and HDMI. These follow the standard of_graph bindings, and allow us to get rid of the 'connectors' phandle that contained a list of all the external encoders connected to MDP. The GPU phandle is removed too until we figure out what's the right way to specify it in DT. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- .../devicetree/bindings/display/msm/mdp.txt | 75 ++++++++++++++++++++-- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/mdp.txt b/Documentation/devicetree/bindings/display/msm/mdp.txt index a214f6c..5f6ae3c 100644 --- a/Documentation/devicetree/bindings/display/msm/mdp.txt +++ b/Documentation/devicetree/bindings/display/msm/mdp.txt @@ -6,7 +6,6 @@ Required properties: * "qcom,mdp5" - mdp5 - reg: Physical base address and length of the controller's registers. - interrupts: The interrupt signal from the display controller. -- connectors: array of phandles for output device(s) - clocks: device clocks See ../clocks/clock-bindings.txt for details. - clock-names: the following clocks are required. @@ -24,9 +23,33 @@ Required properties: * "core_clk" * "lut_clk" (some MDP5 versions may not need this) * "vsync_clk" +- ports: contains the list of output ports from MDP. These connect to interfaces + that are external to the MDP hardware, such as HDMI, DSI, EDP etc (LVDS is a + special case since it is a part of the MDP block itself). + + Each output port contains an endpoint that describes how it is connected to an + external interface. These are described by the standard properties documented + here: + Documentation/devicetree/bindings/graph.txt + Documentation/devicetree/bindings/media/video-interfaces.txt + + For MDP4, the output port mappings are: + Port 0 -> LCDC/LVDS + Port 1 -> DSI1 Cmd/Video + Port 2 -> DSI2 Cmd/Video + Port 3 -> DTV + + For MDP5, the availability of output ports vary across each SoC revision, but + they generally have the following mapping: + Port 0 -> MDP_INTF0 (eDP) + Port 1 -> MDP_INTF1 (DSI1) + Port 2 -> MDP_INTF2 (DSI2) + Port 3 -> MDP_INTF3 (HDMI) + + See drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c to see what all INTFs a particular + SoC revision has enabled. Optional properties: -- gpus: phandle for gpu device - clock-names: the following clocks are optional: * "lut_clk" @@ -35,11 +58,25 @@ Example: / { ... - mdp: qcom,mdp@5100000 { + hdmi: hdmi@4a00000 { + ... + ports { + ... + port@0 { + reg = <0>; + hdmi_in: endpoint { + remote-endpoint = <&mdp_dtv_out>; + }; + }; + ... + }; + ... + }; + + mdp: mdp@5100000 { compatible = "qcom,mdp4"; reg = <0x05100000 0xf0000>; interrupts = <GIC_SPI 75 0>; - connectors = <&hdmi>; gpus = <&gpu>; clock-names = "core_clk", @@ -55,5 +92,35 @@ Example: <&mmcc TV_SRC>, <&mmcc HDMI_TV_CLK>, <&mmcc MDP_TV_CLK>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + mdp_lvds_out: endpoint { + }; + }; + + port@1 { + reg = <1>; + mdp_dsi1_out: endpoint { + }; + }; + + port@2 { + reg = <2>; + mdp_dsi2_out: endpoint { + }; + }; + + port@3 { + reg = <3>; + mdp_dtv_out: endpoint { + remote-endpoint = <&hdmi_in>; + }; + }; + }; }; }; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings 2016-05-03 10:57 ` [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings Archit Taneja @ 2016-05-04 13:38 ` Rob Herring 2016-05-04 17:49 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Rob Herring @ 2016-05-04 13:38 UTC (permalink / raw) To: Archit Taneja; +Cc: devicetree, linux-arm-msm, dri-devel On Tue, May 03, 2016 at 04:27:56PM +0530, Archit Taneja wrote: > The MDP DT node now contains a list of ports that describe how it connects > to external encoder interfaces like DSI and HDMI. These follow the > standard of_graph bindings, and allow us to get rid of the 'connectors' > phandle that contained a list of all the external encoders connected to > MDP. > > The GPU phandle is removed too until we figure out what's the right way > to specify it in DT. [...] > + For MDP4, the output port mappings are: > + Port 0 -> LCDC/LVDS > + Port 1 -> DSI1 Cmd/Video > + Port 2 -> DSI2 Cmd/Video > + Port 3 -> DTV > + > + For MDP5, the availability of output ports vary across each SoC revision, but > + they generally have the following mapping: > + Port 0 -> MDP_INTF0 (eDP) > + Port 1 -> MDP_INTF1 (DSI1) > + Port 2 -> MDP_INTF2 (DSI2) > + Port 3 -> MDP_INTF3 (HDMI) > + > + See drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c to see what all INTFs a particular > + SoC revision has enabled. The binding doc shouldn't depend on kernel code. You need to document it here. Rob _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings 2016-05-04 13:38 ` Rob Herring @ 2016-05-04 17:49 ` Archit Taneja 0 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-04 17:49 UTC (permalink / raw) To: Rob Herring; +Cc: devicetree, linux-arm-msm, dri-devel On 5/4/2016 7:08 PM, Rob Herring wrote: > On Tue, May 03, 2016 at 04:27:56PM +0530, Archit Taneja wrote: >> The MDP DT node now contains a list of ports that describe how it connects >> to external encoder interfaces like DSI and HDMI. These follow the >> standard of_graph bindings, and allow us to get rid of the 'connectors' >> phandle that contained a list of all the external encoders connected to >> MDP. >> >> The GPU phandle is removed too until we figure out what's the right way >> to specify it in DT. > > [...] > >> + For MDP4, the output port mappings are: >> + Port 0 -> LCDC/LVDS >> + Port 1 -> DSI1 Cmd/Video >> + Port 2 -> DSI2 Cmd/Video >> + Port 3 -> DTV >> + >> + For MDP5, the availability of output ports vary across each SoC revision, but >> + they generally have the following mapping: >> + Port 0 -> MDP_INTF0 (eDP) >> + Port 1 -> MDP_INTF1 (DSI1) >> + Port 2 -> MDP_INTF2 (DSI2) >> + Port 3 -> MDP_INTF3 (HDMI) >> + >> + See drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c to see what all INTFs a particular >> + SoC revision has enabled. > > The binding doc shouldn't depend on kernel code. You need to document it > here. Okay. I'll list the available interfaces for each SoC revision. Thanks, Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups [not found] ` <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 14:05 ` Philipp Zabel 2016-05-03 10:58 ` [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja 1 sibling, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja Some cleanups: - Use simpler names for DT nodes in the example - Fix phandle for specifying data lane mapping in the example. - Use references instead of dumping Document links everywhere Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- .../devicetree/bindings/display/msm/dsi.txt | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index f5948c4..bf41d7c 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -11,8 +11,7 @@ Required properties: be 0 or 1, since we have 2 DSI controllers at most for now. - interrupts: The interrupt signal from the DSI block. - power-domains: Should be <&mmcc MDSS_GDSC>. -- clocks: device clocks - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. +- clocks: Phandles to device clocks as descirbed in [1] - clock-names: the following clocks are required: * "mdp_core_clk" * "iface_clk" @@ -31,8 +30,7 @@ Required properties: Optional properties: - panel@0: Node of panel connected to this DSI controller. - See files in Documentation/devicetree/bindings/display/panel/ for each supported - panel. + See files in [2] for each supported panel. - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is driving a panel which needs 2 DSI links. - qcom,master-dsi: Boolean value indicating if the DSI controller is driving @@ -48,7 +46,7 @@ Optional properties: DSI Endpoint properties: - remote-endpoint: set to phandle of the connected panel's endpoint. - See Documentation/devicetree/bindings/graph.txt for device graph info. + See [3] for device graph info. - qcom,data-lane-map: this describes how the logical DSI lanes are mapped to the physical lanes on the given platform. The value contained in index n describes what logical data lane is mapped to the physical data @@ -89,8 +87,7 @@ Required properties: - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should be 0 or 1, since we have 2 DSI PHYs at most for now. - power-domains: Should be <&mmcc MDSS_GDSC>. -- clocks: device clocks - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. +- clocks: Phandles to device clocks as descirbed in [1] - clock-names: the following clocks are required: * "iface_clk" - vddio-supply: phandle to vdd-io regulator device node @@ -99,8 +96,12 @@ Optional properties: - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY regulator is wanted. +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/display/panel/ +[3] Documentation/devicetree/bindings/graph.txt + Example: - mdss_dsi0: qcom,mdss_dsi@fd922800 { + dsi0: dsi@fd922800 { compatible = "qcom,mdss-dsi-ctrl"; qcom,dsi-host-index = <0>; interrupt-parent = <&mdss_mdp>; @@ -128,7 +129,7 @@ Example: vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; - qcom,dsi-phy = <&mdss_dsi_phy0>; + qcom,dsi-phy = <&dsi_phy0>; qcom,dual-dsi-mode; qcom,master-dsi; @@ -156,12 +157,12 @@ Example: port { dsi0_out: endpoint { remote-endpoint = <&panel_in>; - lanes = <0 1 2 3>; + qcom,data-lane-map = <0 1 2 3>; }; }; }; - mdss_dsi_phy0: qcom,mdss_dsi_phy@fd922a00 { + dsi_phy0: dsi_phy@fd922a00 { compatible = "qcom,dsi-phy-28nm-hpm"; qcom,dsi-phy-index = <0>; reg-names = -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups 2016-05-03 10:57 ` [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja @ 2016-05-03 14:05 ` Philipp Zabel 2016-05-04 8:11 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Philipp Zabel @ 2016-05-03 14:05 UTC (permalink / raw) To: Archit Taneja; +Cc: devicetree, linux-arm-msm, dri-devel Am Dienstag, den 03.05.2016, 16:27 +0530 schrieb Archit Taneja: > Some cleanups: > > - Use simpler names for DT nodes in the example > - Fix phandle for specifying data lane mapping in the example. > - Use references instead of dumping Document links everywhere > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > .../devicetree/bindings/display/msm/dsi.txt | 23 +++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt > index f5948c4..bf41d7c 100644 > --- a/Documentation/devicetree/bindings/display/msm/dsi.txt > +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt > @@ -11,8 +11,7 @@ Required properties: > be 0 or 1, since we have 2 DSI controllers at most for now. > - interrupts: The interrupt signal from the DSI block. > - power-domains: Should be <&mmcc MDSS_GDSC>. > -- clocks: device clocks > - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. > +- clocks: Phandles to device clocks as descirbed in [1] s/descirbed/described/ > - clock-names: the following clocks are required: > * "mdp_core_clk" > * "iface_clk" > @@ -31,8 +30,7 @@ Required properties: > > Optional properties: > - panel@0: Node of panel connected to this DSI controller. > - See files in Documentation/devicetree/bindings/display/panel/ for each supported > - panel. > + See files in [2] for each supported panel. > - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is > driving a panel which needs 2 DSI links. > - qcom,master-dsi: Boolean value indicating if the DSI controller is driving > @@ -48,7 +46,7 @@ Optional properties: > > DSI Endpoint properties: > - remote-endpoint: set to phandle of the connected panel's endpoint. > - See Documentation/devicetree/bindings/graph.txt for device graph info. > + See [3] for device graph info. > - qcom,data-lane-map: this describes how the logical DSI lanes are mapped > to the physical lanes on the given platform. The value contained in > index n describes what logical data lane is mapped to the physical data > @@ -89,8 +87,7 @@ Required properties: > - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should > be 0 or 1, since we have 2 DSI PHYs at most for now. > - power-domains: Should be <&mmcc MDSS_GDSC>. > -- clocks: device clocks > - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. > +- clocks: Phandles to device clocks as descirbed in [1] s/descirbed/described/ > - clock-names: the following clocks are required: > * "iface_clk" > - vddio-supply: phandle to vdd-io regulator device node > @@ -99,8 +96,12 @@ Optional properties: > - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY > regulator is wanted. > > +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt > +[2] Documentation/devicetree/bindings/display/panel/ > +[3] Documentation/devicetree/bindings/graph.txt > + > Example: > - mdss_dsi0: qcom,mdss_dsi@fd922800 { > + dsi0: dsi@fd922800 { > compatible = "qcom,mdss-dsi-ctrl"; > qcom,dsi-host-index = <0>; > interrupt-parent = <&mdss_mdp>; > @@ -128,7 +129,7 @@ Example: > vdd-supply = <&pma8084_l22>; > vddio-supply = <&pma8084_l12>; > > - qcom,dsi-phy = <&mdss_dsi_phy0>; > + qcom,dsi-phy = <&dsi_phy0>; > > > qcom,dual-dsi-mode; > qcom,master-dsi; > @@ -156,12 +157,12 @@ Example: > port { > dsi0_out: endpoint { > remote-endpoint = <&panel_in>; > - lanes = <0 1 2 3>; > + qcom,data-lane-map = <0 1 2 3>; See my comment about the CSI-2 data-lanes binding in the other mail, could the existing binding be reused? regards Philipp _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups 2016-05-03 14:05 ` Philipp Zabel @ 2016-05-04 8:11 ` Archit Taneja 0 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-04 8:11 UTC (permalink / raw) To: Philipp Zabel; +Cc: devicetree, linux-arm-msm, dri-devel On 05/03/2016 07:35 PM, Philipp Zabel wrote: > Am Dienstag, den 03.05.2016, 16:27 +0530 schrieb Archit Taneja: >> Some cleanups: >> >> - Use simpler names for DT nodes in the example >> - Fix phandle for specifying data lane mapping in the example. >> - Use references instead of dumping Document links everywhere >> >> Signed-off-by: Archit Taneja <architt@codeaurora.org> >> --- >> .../devicetree/bindings/display/msm/dsi.txt | 23 +++++++++++----------- >> 1 file changed, 12 insertions(+), 11 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt >> index f5948c4..bf41d7c 100644 >> --- a/Documentation/devicetree/bindings/display/msm/dsi.txt >> +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt >> @@ -11,8 +11,7 @@ Required properties: >> be 0 or 1, since we have 2 DSI controllers at most for now. >> - interrupts: The interrupt signal from the DSI block. >> - power-domains: Should be <&mmcc MDSS_GDSC>. >> -- clocks: device clocks >> - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. >> +- clocks: Phandles to device clocks as descirbed in [1] > > s/descirbed/described/ > >> - clock-names: the following clocks are required: >> * "mdp_core_clk" >> * "iface_clk" >> @@ -31,8 +30,7 @@ Required properties: >> >> Optional properties: >> - panel@0: Node of panel connected to this DSI controller. >> - See files in Documentation/devicetree/bindings/display/panel/ for each supported >> - panel. >> + See files in [2] for each supported panel. >> - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is >> driving a panel which needs 2 DSI links. >> - qcom,master-dsi: Boolean value indicating if the DSI controller is driving >> @@ -48,7 +46,7 @@ Optional properties: >> >> DSI Endpoint properties: >> - remote-endpoint: set to phandle of the connected panel's endpoint. >> - See Documentation/devicetree/bindings/graph.txt for device graph info. >> + See [3] for device graph info. >> - qcom,data-lane-map: this describes how the logical DSI lanes are mapped >> to the physical lanes on the given platform. The value contained in >> index n describes what logical data lane is mapped to the physical data >> @@ -89,8 +87,7 @@ Required properties: >> - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should >> be 0 or 1, since we have 2 DSI PHYs at most for now. >> - power-domains: Should be <&mmcc MDSS_GDSC>. >> -- clocks: device clocks >> - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. >> +- clocks: Phandles to device clocks as descirbed in [1] > > s/descirbed/described/ Thanks, will fix these. > >> - clock-names: the following clocks are required: >> * "iface_clk" >> - vddio-supply: phandle to vdd-io regulator device node >> @@ -99,8 +96,12 @@ Optional properties: >> - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY >> regulator is wanted. >> >> +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt >> +[2] Documentation/devicetree/bindings/display/panel/ >> +[3] Documentation/devicetree/bindings/graph.txt >> + >> Example: >> - mdss_dsi0: qcom,mdss_dsi@fd922800 { >> + dsi0: dsi@fd922800 { >> compatible = "qcom,mdss-dsi-ctrl"; >> qcom,dsi-host-index = <0>; >> interrupt-parent = <&mdss_mdp>; >> @@ -128,7 +129,7 @@ Example: >> vdd-supply = <&pma8084_l22>; >> vddio-supply = <&pma8084_l12>; >> >> - qcom,dsi-phy = <&mdss_dsi_phy0>; >> + qcom,dsi-phy = <&dsi_phy0>; >> >> >> qcom,dual-dsi-mode; >> qcom,master-dsi; >> @@ -156,12 +157,12 @@ Example: >> port { >> dsi0_out: endpoint { >> remote-endpoint = <&panel_in>; >> - lanes = <0 1 2 3>; >> + qcom,data-lane-map = <0 1 2 3>; > > See my comment about the CSI-2 data-lanes binding in the other mail, > could the existing binding be reused? Yes, I'll incorporate the existing binding. Thanks for the review. Archit -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings [not found] ` <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-05-03 10:57 ` [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja @ 2016-05-03 10:58 ` Archit Taneja 2016-05-03 14:02 ` Philipp Zabel 1 sibling, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:58 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja The DSI node now has two ports that describe the connection between the MDP interface output and the DSI input, and the connection between the DSI output and the connected panel/bridge. Update the properties and the example. Also, use generic PHY bindings instead of the custom one. Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- .../devicetree/bindings/display/msm/dsi.txt | 53 +++++++++++++++------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index bf41d7c..0223f06 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -25,12 +25,18 @@ Required properties: - vdd-supply: phandle to vdd regulator device node - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node -- qcom,dsi-phy: phandle to DSI PHY device node +- phys: phandle to DSI PHY device node +- phy-names: the name of the corresponding PHY device - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) +- ports: Contains 2 DSI controller ports as child nodes. Each port contains + an endpoint subnode as defined in [2] and [3]. port@0 describes the + connection between the MDP interface output and the DSI input. port@1 + describes the connection between the DSI output and the connected + panel/bridge. Optional properties: - panel@0: Node of panel connected to this DSI controller. - See files in [2] for each supported panel. + See files in [4] for each supported panel. - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is driving a panel which needs 2 DSI links. - qcom,master-dsi: Boolean value indicating if the DSI controller is driving @@ -42,15 +48,15 @@ Optional properties: - pinctrl-names: the pin control state names; should contain "default" - pinctrl-0: the default pinctrl state (active) - pinctrl-n: the "sleep" pinctrl state -- port: DSI controller output port, containing one endpoint subnode. DSI Endpoint properties: - - remote-endpoint: set to phandle of the connected panel's endpoint. - See [3] for device graph info. + - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's + input endpoint. For port@1, set to the MDP interface output. - qcom,data-lane-map: this describes how the logical DSI lanes are mapped to the physical lanes on the given platform. The value contained in index n describes what logical data lane is mapped to the physical data - lane n (DATAn, where n lies between 0 and 3). + lane n (DATAn, where n lies between 0 and 3). Only for the endpoint in + port@1. For example: @@ -97,8 +103,9 @@ Optional properties: regulator is wanted. [1] Documentation/devicetree/bindings/clock/clock-bindings.txt -[2] Documentation/devicetree/bindings/display/panel/ -[3] Documentation/devicetree/bindings/graph.txt +[2] Documentation/devicetree/bindings/graph.txt +[3] Documentation/devicetree/bindings/media/video-interfaces.txt +[4] Documentation/devicetree/bindings/display/panel/ Example: dsi0: dsi@fd922800 { @@ -129,7 +136,8 @@ Example: vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; - qcom,dsi-phy = <&dsi_phy0>; + phys = <&dsi_phy0>; + phy-names ="dsi_phy"; qcom,dual-dsi-mode; qcom,master-dsi; @@ -139,6 +147,26 @@ Example: pinctrl-0 = <&mdss_dsi_active>; pinctrl-1 = <&mdss_dsi_suspend>; + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + dsi0_in: endpoint { + remote-endpoint = <&mdp_intf1_out>; + }; + }; + + port@1 { + reg = <1>; + dsi0_out: endpoint { + remote-endpoint = <&panel_in>; + qcom,data-lane-map = <0 1 2 3>; + }; + }; + }; + panel: panel@0 { compatible = "sharp,lq101r1sx01"; reg = <0>; @@ -153,13 +181,6 @@ Example: }; }; }; - - port { - dsi0_out: endpoint { - remote-endpoint = <&panel_in>; - qcom,data-lane-map = <0 1 2 3>; - }; - }; }; dsi_phy0: dsi_phy@fd922a00 { -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings 2016-05-03 10:58 ` [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja @ 2016-05-03 14:02 ` Philipp Zabel 2016-05-04 8:09 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Philipp Zabel @ 2016-05-03 14:02 UTC (permalink / raw) To: Archit Taneja Cc: robdclark, robh, linux-arm-msm, dri-devel, heiko, devicetree Am Dienstag, den 03.05.2016, 16:28 +0530 schrieb Archit Taneja: > The DSI node now has two ports that describe the connection between the > MDP interface output and the DSI input, and the connection between the DSI > output and the connected panel/bridge. Update the properties and the > example. > > Also, use generic PHY bindings instead of the custom one. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > .../devicetree/bindings/display/msm/dsi.txt | 53 +++++++++++++++------- > 1 file changed, 37 insertions(+), 16 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt > index bf41d7c..0223f06 100644 > --- a/Documentation/devicetree/bindings/display/msm/dsi.txt > +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt > @@ -25,12 +25,18 @@ Required properties: > - vdd-supply: phandle to vdd regulator device node > - vddio-supply: phandle to vdd-io regulator device node > - vdda-supply: phandle to vdda regulator device node > -- qcom,dsi-phy: phandle to DSI PHY device node > +- phys: phandle to DSI PHY device node > +- phy-names: the name of the corresponding PHY device Should "dsi_phy" be specified here? Also is there any kind of system to the PHY naming? I've seen more bindings use hyphen instead of underscore in the name, for example. I have called the MediaTek MIPI_TX PHY "dphy" for no other reason than it's a MIPI D-PHY. > - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) > +- ports: Contains 2 DSI controller ports as child nodes. Each port contains > + an endpoint subnode as defined in [2] and [3]. port@0 describes the > + connection between the MDP interface output and the DSI input. port@1 > + describes the connection between the DSI output and the connected > + panel/bridge. > > Optional properties: > - panel@0: Node of panel connected to this DSI controller. > - See files in [2] for each supported panel. > + See files in [4] for each supported panel. > - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is > driving a panel which needs 2 DSI links. > - qcom,master-dsi: Boolean value indicating if the DSI controller is driving > @@ -42,15 +48,15 @@ Optional properties: > - pinctrl-names: the pin control state names; should contain "default" > - pinctrl-0: the default pinctrl state (active) > - pinctrl-n: the "sleep" pinctrl state > -- port: DSI controller output port, containing one endpoint subnode. > > DSI Endpoint properties: > - - remote-endpoint: set to phandle of the connected panel's endpoint. > - See [3] for device graph info. > + - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's > + input endpoint. For port@1, set to the MDP interface output. > - qcom,data-lane-map: this describes how the logical DSI lanes are mapped > to the physical lanes on the given platform. The value contained in > index n describes what logical data lane is mapped to the physical data > - lane n (DATAn, where n lies between 0 and 3). > + lane n (DATAn, where n lies between 0 and 3). Only for the endpoint in > + port@1. I approve of the of graph change, but I notice that the qcom,data-lane-map is very similar to the data-lanes property documented in Documentation/devicetree/bindings/media/video-interfaces.txt for MIPI CSI-2. Could that maybe be reused for DSI? > For example: > > @@ -97,8 +103,9 @@ Optional properties: > regulator is wanted. > > [1] Documentation/devicetree/bindings/clock/clock-bindings.txt > -[2] Documentation/devicetree/bindings/display/panel/ > -[3] Documentation/devicetree/bindings/graph.txt > +[2] Documentation/devicetree/bindings/graph.txt > +[3] Documentation/devicetree/bindings/media/video-interfaces.txt > +[4] Documentation/devicetree/bindings/display/panel/ > > Example: > dsi0: dsi@fd922800 { > @@ -129,7 +136,8 @@ Example: > vdd-supply = <&pma8084_l22>; > vddio-supply = <&pma8084_l12>; > > - qcom,dsi-phy = <&dsi_phy0>; > + phys = <&dsi_phy0>; > + phy-names ="dsi_phy"; > > qcom,dual-dsi-mode; > qcom,master-dsi; > @@ -139,6 +147,26 @@ Example: > pinctrl-0 = <&mdss_dsi_active>; > pinctrl-1 = <&mdss_dsi_suspend>; > > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + dsi0_in: endpoint { > + remote-endpoint = <&mdp_intf1_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + dsi0_out: endpoint { > + remote-endpoint = <&panel_in>; > + qcom,data-lane-map = <0 1 2 3>; > + }; > + }; > + }; > + > panel: panel@0 { > compatible = "sharp,lq101r1sx01"; > reg = <0>; If the panel is connected via port@1, why is this still needed? > @@ -153,13 +181,6 @@ Example: > }; > }; > }; > - > - port { > - dsi0_out: endpoint { > - remote-endpoint = <&panel_in>; > - qcom,data-lane-map = <0 1 2 3>; > - }; > - }; > }; > > dsi_phy0: dsi_phy@fd922a00 { regards Philipp ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings 2016-05-03 14:02 ` Philipp Zabel @ 2016-05-04 8:09 ` Archit Taneja 0 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-04 8:09 UTC (permalink / raw) To: Philipp Zabel Cc: robdclark, robh, linux-arm-msm, dri-devel, heiko, devicetree On 05/03/2016 07:32 PM, Philipp Zabel wrote: > Am Dienstag, den 03.05.2016, 16:28 +0530 schrieb Archit Taneja: >> The DSI node now has two ports that describe the connection between the >> MDP interface output and the DSI input, and the connection between the DSI >> output and the connected panel/bridge. Update the properties and the >> example. >> >> Also, use generic PHY bindings instead of the custom one. >> >> Signed-off-by: Archit Taneja <architt@codeaurora.org> >> --- >> .../devicetree/bindings/display/msm/dsi.txt | 53 +++++++++++++++------- >> 1 file changed, 37 insertions(+), 16 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt >> index bf41d7c..0223f06 100644 >> --- a/Documentation/devicetree/bindings/display/msm/dsi.txt >> +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt >> @@ -25,12 +25,18 @@ Required properties: >> - vdd-supply: phandle to vdd regulator device node >> - vddio-supply: phandle to vdd-io regulator device node >> - vdda-supply: phandle to vdda regulator device node >> -- qcom,dsi-phy: phandle to DSI PHY device node >> +- phys: phandle to DSI PHY device node >> +- phy-names: the name of the corresponding PHY device > > Should "dsi_phy" be specified here? > > Also is there any kind of system to the PHY naming? I've seen more > bindings use hyphen instead of underscore in the name, for example. > I have called the MediaTek MIPI_TX PHY "dphy" for no other reason than > it's a MIPI D-PHY. I agree with the hyphen part, I'll switch to that. The DSI PHY block isn't only the D-PHY interface, it also contains a PLL and some logic to support more complex configurations (for example, syncing with the PHY connected to another DSI output). That's the main reason why I left the name as "dsi_phy". > >> - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) >> +- ports: Contains 2 DSI controller ports as child nodes. Each port contains >> + an endpoint subnode as defined in [2] and [3]. port@0 describes the >> + connection between the MDP interface output and the DSI input. port@1 >> + describes the connection between the DSI output and the connected >> + panel/bridge. >> >> Optional properties: >> - panel@0: Node of panel connected to this DSI controller. >> - See files in [2] for each supported panel. >> + See files in [4] for each supported panel. >> - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is >> driving a panel which needs 2 DSI links. >> - qcom,master-dsi: Boolean value indicating if the DSI controller is driving >> @@ -42,15 +48,15 @@ Optional properties: >> - pinctrl-names: the pin control state names; should contain "default" >> - pinctrl-0: the default pinctrl state (active) >> - pinctrl-n: the "sleep" pinctrl state >> -- port: DSI controller output port, containing one endpoint subnode. >> >> DSI Endpoint properties: >> - - remote-endpoint: set to phandle of the connected panel's endpoint. >> - See [3] for device graph info. >> + - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's >> + input endpoint. For port@1, set to the MDP interface output. >> - qcom,data-lane-map: this describes how the logical DSI lanes are mapped >> to the physical lanes on the given platform. The value contained in >> index n describes what logical data lane is mapped to the physical data >> - lane n (DATAn, where n lies between 0 and 3). >> + lane n (DATAn, where n lies between 0 and 3). Only for the endpoint in >> + port@1. > > I approve of the of graph change, but I notice that the > qcom,data-lane-map is very similar to the data-lanes property documented > in Documentation/devicetree/bindings/media/video-interfaces.txt for MIPI > CSI-2. Could that maybe be reused for DSI? You're right. I missed out on the existing binding when I posted this. One difference in this binding is that the indices here point to the physical lanes, and the value contained in the index is the logical lane (that's how it's described in the register documentation). For the "data-lanes" property, it's the other way round. It's still better to use the existing binding. I'll post a separate patch to update this. > >> For example: >> >> @@ -97,8 +103,9 @@ Optional properties: >> regulator is wanted. >> >> [1] Documentation/devicetree/bindings/clock/clock-bindings.txt >> -[2] Documentation/devicetree/bindings/display/panel/ >> -[3] Documentation/devicetree/bindings/graph.txt >> +[2] Documentation/devicetree/bindings/graph.txt >> +[3] Documentation/devicetree/bindings/media/video-interfaces.txt >> +[4] Documentation/devicetree/bindings/display/panel/ >> >> Example: >> dsi0: dsi@fd922800 { >> @@ -129,7 +136,8 @@ Example: >> vdd-supply = <&pma8084_l22>; >> vddio-supply = <&pma8084_l12>; >> >> - qcom,dsi-phy = <&dsi_phy0>; >> + phys = <&dsi_phy0>; >> + phy-names ="dsi_phy"; >> >> qcom,dual-dsi-mode; >> qcom,master-dsi; >> @@ -139,6 +147,26 @@ Example: >> pinctrl-0 = <&mdss_dsi_active>; >> pinctrl-1 = <&mdss_dsi_suspend>; >> >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + dsi0_in: endpoint { >> + remote-endpoint = <&mdp_intf1_out>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + dsi0_out: endpoint { >> + remote-endpoint = <&panel_in>; >> + qcom,data-lane-map = <0 1 2 3>; >> + }; >> + }; >> + }; >> + >> panel: panel@0 { >> compatible = "sharp,lq101r1sx01"; >> reg = <0>; > > If the panel is connected via port@1, why is this still needed? Did you mean that the numbering(reg prop) isn't needed? If so, yeah, I missed out on that. I'll remove it. Thanks for pointing it out. Archit -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH 6/9] drm/msm/dsi: Modify port parsing 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja ` (4 preceding siblings ...) [not found] ` <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 10:57 ` [PATCH 7/9] drm/msm/dsi: Use generic PHY bindings Archit Taneja ` (2 subsequent siblings) 8 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The DSI interface is going to have two ports defined in its device node. The first port is always going to be the link between the MDP output and the input to DSI, the second port is going to be the link between the DSI output and the connected panel/bridge: ----- ----- ------- | MDP | ------> | DSI | ------> | Panel | ----- ----- ------- (Port 0) (Port 1) Until now, there was only one Port representing the output. Update the DSI host driver such that it parses Port #1 for a connected device. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/dsi/dsi_host.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 51fbbf8..15c70ac 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1616,12 +1616,12 @@ static int dsi_host_parse_dt(struct msm_dsi_host *msm_host) } /* - * Get the first endpoint node. In our case, dsi has one output port - * to which the panel is connected. Don't return an error if a port - * isn't defined. It's possible that there is nothing connected to - * the dsi output. + * Get the endpoint of the output port of the DSI host. In our case, + * this is mapped to port number with reg = 1. Don't return an error if + * the remote endpoint isn't defined. It's possible that there is + * nothing connected to the dsi output. */ - endpoint = of_graph_get_next_endpoint(np, NULL); + endpoint = of_graph_get_endpoint_by_regs(np, 1, -1); if (!endpoint) { dev_dbg(dev, "%s: no endpoint\n", __func__); return 0; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH 7/9] drm/msm/dsi: Use generic PHY bindings 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja ` (5 preceding siblings ...) 2016-05-03 10:57 ` [PATCH 6/9] drm/msm/dsi: Modify port parsing Archit Taneja @ 2016-05-03 10:57 ` Archit Taneja 2016-05-03 10:58 ` [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja 8 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:57 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The DSI host links to the DSI PHY device using a custom binding. Switch to the generic PHY bindings. The DSI PHY driver itself doesn't use the common PHY framework for now. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/dsi/dsi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 6edcd6f..ec572f8 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -29,7 +29,7 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi) struct platform_device *phy_pdev; struct device_node *phy_node; - phy_node = of_parse_phandle(pdev->dev.of_node, "qcom,dsi-phy", 0); + phy_node = of_parse_phandle(pdev->dev.of_node, "phys", 0); if (!phy_node) { dev_err(&pdev->dev, "cannot find phy device\n"); return -ENXIO; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja ` (6 preceding siblings ...) 2016-05-03 10:57 ` [PATCH 7/9] drm/msm/dsi: Use generic PHY bindings Archit Taneja @ 2016-05-03 10:58 ` Archit Taneja 2016-05-04 13:44 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja 8 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-03 10:58 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel The PLL in the DSI PHY block generates 2 clock outputs (Byte and Pixel clocks) that are fed into the Multimedia Clock Controller (MMCC). The MMCC uses these as source clocks for some of its RCGs to generate clocks that finally feed to the DSI host controller. Use the assigned clocks DT bindings to set up the MMCC RCGs that feed to the DSI host. Use the DSI PHY provided clocks to set up the parents of these assigned clocks. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- Documentation/devicetree/bindings/display/msm/dsi.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index 0223f06..686f475 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -22,6 +22,10 @@ Required properties: * "core_clk" For DSIv2, we need an additional clock: * "src_clk" +- assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. + See [1] for more details. +- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided + by a DSI PHY block. - vdd-supply: phandle to vdd regulator device node - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node @@ -90,6 +94,8 @@ Required properties: * "dsi_pll" * "dsi_phy" * "dsi_phy_regulator" +- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating + 2 clocks: A byte clock (index 0), and a pixel clock (index 1). - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should be 0 or 1, since we have 2 DSI PHYs at most for now. - power-domains: Should be <&mmcc MDSS_GDSC>. @@ -132,6 +138,14 @@ Example: <&mmcc MDSS_AHB_CLK>, <&mmcc MDSS_MDP_CLK>, <&mmcc MDSS_PCLK0_CLK>; + + assigned-clocks = + <&mmcc BYTE0_CLK_SRC>, + <&mmcc PCLK0_CLK_SRC>; + assigned-clock-parents = + <&dsi0_phy 0>, + <&dsi0_phy 1>; + vdda-supply = <&pma8084_l2>; vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; @@ -195,6 +209,7 @@ Example: <0xfd922d80 0x7b>; clock-names = "iface_clk"; clocks = <&mmcc MDSS_AHB_CLK>; + #clock-cells = <1>; vddio-supply = <&pma8084_l12>; qcom,dsi-phy-regulator-ldo-mode; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings 2016-05-03 10:58 ` [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja @ 2016-05-04 13:44 ` Rob Herring 2016-05-04 18:04 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Rob Herring @ 2016-05-04 13:44 UTC (permalink / raw) To: Archit Taneja Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On Tue, May 03, 2016 at 04:28:01PM +0530, Archit Taneja wrote: > The PLL in the DSI PHY block generates 2 clock outputs (Byte and Pixel > clocks) that are fed into the Multimedia Clock Controller (MMCC). The MMCC > uses these as source clocks for some of its RCGs to generate clocks that > finally feed to the DSI host controller. > > Use the assigned clocks DT bindings to set up the MMCC RCGs that feed to > the DSI host. Use the DSI PHY provided clocks to set up the parents > of these assigned clocks. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > Documentation/devicetree/bindings/display/msm/dsi.txt | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt > index 0223f06..686f475 100644 > --- a/Documentation/devicetree/bindings/display/msm/dsi.txt > +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt > @@ -22,6 +22,10 @@ Required properties: > * "core_clk" > For DSIv2, we need an additional clock: > * "src_clk" > +- assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. > + See [1] for more details. > +- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided > + by a DSI PHY block. > - vdd-supply: phandle to vdd regulator device node > - vddio-supply: phandle to vdd-io regulator device node > - vdda-supply: phandle to vdda regulator device node > @@ -90,6 +94,8 @@ Required properties: > * "dsi_pll" > * "dsi_phy" > * "dsi_phy_regulator" > +- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating > + 2 clocks: A byte clock (index 0), and a pixel clock (index 1). You can't really add new required properties unless they are for a new compatible string. Rob ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings 2016-05-04 13:44 ` Rob Herring @ 2016-05-04 18:04 ` Archit Taneja [not found] ` <572A39B7.5020008-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 0 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-05-04 18:04 UTC (permalink / raw) To: Rob Herring Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On 5/4/2016 7:14 PM, Rob Herring wrote: > On Tue, May 03, 2016 at 04:28:01PM +0530, Archit Taneja wrote: >> The PLL in the DSI PHY block generates 2 clock outputs (Byte and Pixel >> clocks) that are fed into the Multimedia Clock Controller (MMCC). The MMCC >> uses these as source clocks for some of its RCGs to generate clocks that >> finally feed to the DSI host controller. >> >> Use the assigned clocks DT bindings to set up the MMCC RCGs that feed to >> the DSI host. Use the DSI PHY provided clocks to set up the parents >> of these assigned clocks. >> >> Signed-off-by: Archit Taneja <architt@codeaurora.org> >> --- >> Documentation/devicetree/bindings/display/msm/dsi.txt | 15 +++++++++++++++ >> 1 file changed, 15 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt >> index 0223f06..686f475 100644 >> --- a/Documentation/devicetree/bindings/display/msm/dsi.txt >> +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt >> @@ -22,6 +22,10 @@ Required properties: >> * "core_clk" >> For DSIv2, we need an additional clock: >> * "src_clk" >> +- assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. >> + See [1] for more details. >> +- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided >> + by a DSI PHY block. >> - vdd-supply: phandle to vdd regulator device node >> - vddio-supply: phandle to vdd-io regulator device node >> - vdda-supply: phandle to vdda regulator device node >> @@ -90,6 +94,8 @@ Required properties: >> * "dsi_pll" >> * "dsi_phy" >> * "dsi_phy_regulator" >> +- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating >> + 2 clocks: A byte clock (index 0), and a pixel clock (index 1). > > You can't really add new required properties unless they are for a new > compatible string. Does this hold even when currently there isn't any device tree file in the kernel that has this DT node in it? I was trying to get all the properties in place before posting out patches that actually add the nodes into the platform files. Currently, they exist only DT files in downstream kernels. Thanks, Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <572A39B7.5020008-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* Re: [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings [not found] ` <572A39B7.5020008-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-05-11 14:08 ` Rob Herring 0 siblings, 0 replies; 38+ messages in thread From: Rob Herring @ 2016-05-11 14:08 UTC (permalink / raw) To: Archit Taneja Cc: robdclark-Re5JQEeQqe8AvxtiuMwx3w, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA On Wed, May 04, 2016 at 11:34:39PM +0530, Archit Taneja wrote: > > > On 5/4/2016 7:14 PM, Rob Herring wrote: > >On Tue, May 03, 2016 at 04:28:01PM +0530, Archit Taneja wrote: > >>The PLL in the DSI PHY block generates 2 clock outputs (Byte and Pixel > >>clocks) that are fed into the Multimedia Clock Controller (MMCC). The MMCC > >>uses these as source clocks for some of its RCGs to generate clocks that > >>finally feed to the DSI host controller. > >> > >>Use the assigned clocks DT bindings to set up the MMCC RCGs that feed to > >>the DSI host. Use the DSI PHY provided clocks to set up the parents > >>of these assigned clocks. > >> > >>Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> > >>--- > >> Documentation/devicetree/bindings/display/msm/dsi.txt | 15 +++++++++++++++ > >> 1 file changed, 15 insertions(+) > >> > >>diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt > >>index 0223f06..686f475 100644 > >>--- a/Documentation/devicetree/bindings/display/msm/dsi.txt > >>+++ b/Documentation/devicetree/bindings/display/msm/dsi.txt > >>@@ -22,6 +22,10 @@ Required properties: > >> * "core_clk" > >> For DSIv2, we need an additional clock: > >> * "src_clk" > >>+- assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. > >>+ See [1] for more details. > >>+- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided > >>+ by a DSI PHY block. > >> - vdd-supply: phandle to vdd regulator device node > >> - vddio-supply: phandle to vdd-io regulator device node > >> - vdda-supply: phandle to vdda regulator device node > >>@@ -90,6 +94,8 @@ Required properties: > >> * "dsi_pll" > >> * "dsi_phy" > >> * "dsi_phy_regulator" > >>+- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating > >>+ 2 clocks: A byte clock (index 0), and a pixel clock (index 1). > > > >You can't really add new required properties unless they are for a new > >compatible string. > > Does this hold even when currently there isn't any device tree file in > the kernel that has this DT node in it? Generally it should, but in this case that is fine. Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > I was trying to get all the properties in place before posting out > patches that actually add the nodes into the platform files. Currently, > they exist only DT files in downstream kernels. "If it is not upstream, it doesn't exist." :) Rob -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 00/10] drm/msm: Fix issues with DT bindings 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja ` (7 preceding siblings ...) 2016-05-03 10:58 ` [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> ` (6 more replies) 8 siblings, 7 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh; +Cc: devicetree, linux-arm-msm, dri-devel Currently, none of the upstream Qualcomm DT files have the display device nodes populated, even when the DT binding documents are upstream. This revision drops the patches that add components via parsing ports. The component addition changes will be handled in a separate patchset later. These contain mostly misc DT fixes, in preparation for full DT support. This also incorporates some of the comments given for the previous revision. changes in v2: - Drop patches that allowed component addition via MDP port parsing. - Use a more standard data lanes binding for DSI. - Use hyphen in the common PHY binding names for the examples. - Add some DT related fixes for MDP4/5 clocks. Original revision: https://lists.freedesktop.org/archives/dri-devel/2016-May/106653.html Archit Taneja (10): drm/msm/mdp5: Don't get source of MDP core clock drm/msm/mdp4: Clean up some MDP4 clocks dt-bindings: msm/mdp: Fix up clock related bindings drm/msm/dsi: Modify port parsing drm/msm/dsi: Use generic PHY bindings drm/msm/dsi: Use a standard DT binding for data lanes dt-bindings: msm/dsi: Use standard data lanes binding dt-bindings: msm/dsi: Modify port and PHY bindings dt-bindings: msm/dsi: Add assigned clocks bindings dt-bindings: msm/dsi: Some binding doc cleanups .../devicetree/bindings/display/msm/dsi.txt | 117 ++++++++++++++------- .../devicetree/bindings/display/msm/mdp.txt | 10 +- drivers/gpu/drm/msm/dsi/dsi.c | 2 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 27 +++-- drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c | 31 +++--- drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 2 +- drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 7 +- drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 1 - 8 files changed, 116 insertions(+), 81 deletions(-) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
[parent not found: <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* [PATCH v2 01/10] drm/msm/mdp5: Don't get source of MDP core clock [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-06-10 10:46 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings Archit Taneja ` (2 subsequent siblings) 3 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja The driver expects DT to provide the parent to MDP core clock. The only operation done to the parent clock is to set a rate. This can be achieved by setting the rate on the core clock itsef. Don't try to get the parent clock anymore. Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 7 ++----- drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 1 - 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c index 1d840ae..b46961e 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c @@ -629,9 +629,6 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) ret = get_clk(pdev, &mdp5_kms->ahb_clk, "iface_clk", true); if (ret) goto fail; - ret = get_clk(pdev, &mdp5_kms->src_clk, "core_clk_src", true); - if (ret) - goto fail; ret = get_clk(pdev, &mdp5_kms->core_clk, "core_clk", true); if (ret) goto fail; @@ -646,7 +643,7 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) * rate first, then figure out hw revision, and then set a * more optimal rate: */ - clk_set_rate(mdp5_kms->src_clk, 200000000); + clk_set_rate(mdp5_kms->core_clk, 200000000); read_hw_revision(mdp5_kms, &major, &minor); @@ -661,7 +658,7 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) mdp5_kms->caps = config->hw->mdp.caps; /* TODO: compute core clock rate at runtime */ - clk_set_rate(mdp5_kms->src_clk, config->hw->max_clk); + clk_set_rate(mdp5_kms->core_clk, config->hw->max_clk); /* * Some chipsets have a Shared Memory Pool (SMP), while others diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h index 9a25898..9cf5aa4 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h @@ -49,7 +49,6 @@ struct mdp5_kms { struct clk *axi_clk; struct clk *ahb_clk; - struct clk *src_clk; struct clk *core_clk; struct clk *lut_clk; struct clk *vsync_clk; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-06-10 10:46 ` [PATCH v2 01/10] drm/msm/mdp5: Don't get source of MDP core clock Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-13 19:03 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding Archit Taneja 2016-06-10 10:46 ` [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja 3 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja MDP5: - Don't ask for source clock MDP4: - Give a better name for MDP_TV_CLK - Remove TV_SRC - Add MDP_AXI_CLK Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- Documentation/devicetree/bindings/display/msm/mdp.txt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/mdp.txt b/Documentation/devicetree/bindings/display/msm/mdp.txt index a214f6c..1d3d79d 100644 --- a/Documentation/devicetree/bindings/display/msm/mdp.txt +++ b/Documentation/devicetree/bindings/display/msm/mdp.txt @@ -13,14 +13,13 @@ Required properties: For MDP4: * "core_clk" * "iface_clk" + * "bus_clk" * "lut_clk" - * "src_clk" * "hdmi_clk" - * "mdp_clk" + * "tv_clk" For MDP5: * "bus_clk" * "iface_clk" - * "core_clk_src" * "core_clk" * "lut_clk" (some MDP5 versions may not need this) * "vsync_clk" @@ -45,14 +44,13 @@ Example: "core_clk", "iface_clk", "lut_clk", - "src_clk", "hdmi_clk", "mdp_clk"; clocks = - <&mmcc MDP_SRC>, + <&mmcc MDP_CLK>, <&mmcc MDP_AHB_CLK>, + <&mmcc MDP_AXI_CLK>, <&mmcc MDP_LUT_CLK>, - <&mmcc TV_SRC>, <&mmcc HDMI_TV_CLK>, <&mmcc MDP_TV_CLK>; }; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings 2016-06-10 10:46 ` [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings Archit Taneja @ 2016-06-13 19:03 ` Rob Herring 2016-06-16 5:08 ` Archit Taneja 0 siblings, 1 reply; 38+ messages in thread From: Rob Herring @ 2016-06-13 19:03 UTC (permalink / raw) To: Archit Taneja Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On Fri, Jun 10, 2016 at 04:16:33PM +0530, Archit Taneja wrote: > MDP5: > - Don't ask for source clock > > MDP4: > - Give a better name for MDP_TV_CLK > - Remove TV_SRC > - Add MDP_AXI_CLK This could use the explanation in the commit msg why it is okay you are breaking compatibility. With that, Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings 2016-06-13 19:03 ` Rob Herring @ 2016-06-16 5:08 ` Archit Taneja 0 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-16 5:08 UTC (permalink / raw) To: Rob Herring Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On 06/14/2016 12:33 AM, Rob Herring wrote: > On Fri, Jun 10, 2016 at 04:16:33PM +0530, Archit Taneja wrote: >> MDP5: >> - Don't ask for source clock >> >> MDP4: >> - Give a better name for MDP_TV_CLK >> - Remove TV_SRC >> - Add MDP_AXI_CLK > > This could use the explanation in the commit msg why it is okay you are > breaking compatibility. Sure, I'll do that. Thanks for the reviews. Archit > > With that, > > Acked-by: Rob Herring <robh@kernel.org> > -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-06-10 10:46 ` [PATCH v2 01/10] drm/msm/mdp5: Don't get source of MDP core clock Archit Taneja 2016-06-10 10:46 ` [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-13 19:53 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja 3 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja The "qcom,data-lane-map" binding mentioned in the document is changed to the more generic "data-lanes" property specified in: Documentation/devicetree/bindings/media/video-interfaces.txt The previous binding expressed physical to logical data lane mappings, the standard "data-lanes" binding uses logical to physical data lane mappings. Update the docs to reflect this change. The example had the property incorrectly named as "lanes", update this too. The MSM DSI DT bindings aren't used anywhere at the moment, so it's okay to update this property. Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- .../devicetree/bindings/display/msm/dsi.txt | 37 +++++++++++----------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index f5948c4..9d2d2bb 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -49,29 +49,30 @@ Optional properties: DSI Endpoint properties: - remote-endpoint: set to phandle of the connected panel's endpoint. See Documentation/devicetree/bindings/graph.txt for device graph info. - - qcom,data-lane-map: this describes how the logical DSI lanes are mapped - to the physical lanes on the given platform. The value contained in - index n describes what logical data lane is mapped to the physical data - lane n (DATAn, where n lies between 0 and 3). + - data-lanes: this describes how the physical DSI data lanes are mapped + to the logical lanes on the given platform. The value contained in + index n describes what physical lane is mapped to the logical lane n + (DATAn, where n lies between 0 and 3). The clock lane position is fixed + and can't be changed. Hence, they aren't a part of the DT bindings. For + more info, see Documentation/devicetree/bindings/media/video-interfaces.txt For example: - qcom,data-lane-map = <3 0 1 2>; + data-lanes = <3 0 1 2>; - The above mapping describes that the logical data lane DATA3 is mapped to - the physical data lane DATA0, logical DATA0 to physical DATA1, logic DATA1 - to phys DATA2 and logic DATA2 to phys DATA3. + The above mapping describes that the logical data lane DATA0 is mapped to + the physical data lane DATA3, logical DATA1 to physical DATA0, logic DATA2 + to phys DATA1 and logic DATA3 to phys DATA2. There are only a limited number of physical to logical mappings possible: - - "0123": Logic 0->Phys 0; Logic 1->Phys 1; Logic 2->Phys 2; Logic 3->Phys 3; - "3012": Logic 3->Phys 0; Logic 0->Phys 1; Logic 1->Phys 2; Logic 2->Phys 3; - "2301": Logic 2->Phys 0; Logic 3->Phys 1; Logic 0->Phys 2; Logic 1->Phys 3; - "1230": Logic 1->Phys 0; Logic 2->Phys 1; Logic 3->Phys 2; Logic 0->Phys 3; - "0321": Logic 0->Phys 0; Logic 3->Phys 1; Logic 2->Phys 2; Logic 1->Phys 3; - "1032": Logic 1->Phys 0; Logic 0->Phys 1; Logic 3->Phys 2; Logic 2->Phys 3; - "2103": Logic 2->Phys 0; Logic 1->Phys 1; Logic 0->Phys 2; Logic 3->Phys 3; - "3210": Logic 3->Phys 0; Logic 2->Phys 1; Logic 1->Phys 2; Logic 0->Phys 3; + <0 1 2 3> + <1 2 3 0> + <2 3 0 1> + <3 0 1 2> + <0 3 2 1> + <1 0 3 2> + <2 1 0 3> + <3 2 1 0> DSI PHY: Required properties: @@ -156,7 +157,7 @@ Example: port { dsi0_out: endpoint { remote-endpoint = <&panel_in>; - lanes = <0 1 2 3>; + data-lanes = <0 1 2 3>; }; }; }; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding 2016-06-10 10:46 ` [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding Archit Taneja @ 2016-06-13 19:53 ` Rob Herring 0 siblings, 0 replies; 38+ messages in thread From: Rob Herring @ 2016-06-13 19:53 UTC (permalink / raw) To: Archit Taneja Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On Fri, Jun 10, 2016 at 04:16:37PM +0530, Archit Taneja wrote: > The "qcom,data-lane-map" binding mentioned in the document is changed to > the more generic "data-lanes" property specified in: > > Documentation/devicetree/bindings/media/video-interfaces.txt > > The previous binding expressed physical to logical data lane mappings, > the standard "data-lanes" binding uses logical to physical data lane > mappings. Update the docs to reflect this change. The example had the > property incorrectly named as "lanes", update this too. > > The MSM DSI DT bindings aren't used anywhere at the moment, so > it's okay to update this property. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > .../devicetree/bindings/display/msm/dsi.txt | 37 +++++++++++----------- > 1 file changed, 19 insertions(+), 18 deletions(-) Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> ` (2 preceding siblings ...) 2016-06-10 10:46 ` [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-14 12:33 ` Rob Herring 3 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, heiko-4mtYJXux2i+zQB+pC5nmwQ, p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA, Archit Taneja Some cleanups: - Use simpler names for DT nodes in the example - Use references instead of dumping Document links everywhere Signed-off-by: Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> --- .../devicetree/bindings/display/msm/dsi.txt | 45 +++++++++++----------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index f458929..6b1cab1 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -11,7 +11,7 @@ Required properties: be 0 or 1, since we have 2 DSI controllers at most for now. - interrupts: The interrupt signal from the DSI block. - power-domains: Should be <&mmcc MDSS_GDSC>. -- clocks: device clocks +- clocks: Phandles to device clocks. - clock-names: the following clocks are required: * "mdp_core_clk" * "iface_clk" @@ -24,8 +24,7 @@ Required properties: * "src_clk" - assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. - assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided - by a DSI PHY block. - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. + by a DSI PHY block. See [1] for details on clock bindings. - vdd-supply: phandle to vdd regulator device node - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node @@ -33,15 +32,11 @@ Required properties: - phy-names: the name of the corresponding PHY device - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) - ports: Contains 2 DSI controller ports as child nodes. Each port contains - an endpoint subnode as defined in these documents: - - Documentation/devicetree/bindings/graph.txt - Documentation/devicetree/bindings/media/video-interfaces.txt + an endpoint subnode as defined in [2] and [3]. Optional properties: - panel@0: Node of panel connected to this DSI controller. - See files in Documentation/devicetree/bindings/display/panel/ for each supported - panel. + See files in [4] for each supported panel. - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is driving a panel which needs 2 DSI links. - qcom,master-dsi: Boolean value indicating if the DSI controller is driving @@ -58,15 +53,15 @@ Optional properties: DSI Endpoint properties: - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's - input endpoint. For port@1, set to the MDP interface output. - See Documentation/devicetree/bindings/graph.txt for device graph info. + input endpoint. For port@1, set to the MDP interface output. See [2] for + device graph info. - data-lanes: this describes how the physical DSI data lanes are mapped to the logical lanes on the given platform. The value contained in index n describes what physical lane is mapped to the logical lane n (DATAn, where n lies between 0 and 3). The clock lane position is fixed - and can't be changed. Hence, they aren't a part of the DT bindings. For - more info, see Documentation/devicetree/bindings/media/video-interfaces.txt + and can't be changed. Hence, they aren't a part of the DT bindings. See + [3] for more info on the data-lanes property. For example: @@ -104,8 +99,7 @@ Required properties: - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should be 0 or 1, since we have 2 DSI PHYs at most for now. - power-domains: Should be <&mmcc MDSS_GDSC>. -- clocks: device clocks - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. +- clocks: Phandles to device clocks. See [1] for details on clock bindings. - clock-names: the following clocks are required: * "iface_clk" - vddio-supply: phandle to vdd-io regulator device node @@ -114,11 +108,16 @@ Optional properties: - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY regulator is wanted. +[1] Documentation/devicetree/bindings/clocks/clock-bindings.txt +[2] Documentation/devicetree/bindings/graph.txt +[3] Documentation/devicetree/bindings/media/video-interfaces.txt +[4] Documentation/devicetree/bindings/display/panel/ + Example: - mdss_dsi0: qcom,mdss_dsi@fd922800 { + dsi0: dsi@fd922800 { compatible = "qcom,mdss-dsi-ctrl"; qcom,dsi-host-index = <0>; - interrupt-parent = <&mdss_mdp>; + interrupt-parent = <&mdp>; interrupts = <4 0>; reg-names = "dsi_ctrl"; reg = <0xfd922800 0x200>; @@ -144,14 +143,14 @@ Example: <&mmcc BYTE0_CLK_SRC>, <&mmcc PCLK0_CLK_SRC>; assigned-clock-parents = - <&mdss_dsi_phy0 0>, - <&mdss_dsi_phy0 1>; + <&dsi_phy0 0>, + <&dsi_phy0 1>; vdda-supply = <&pma8084_l2>; vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; - phys = <&mdss_dsi_phy0>; + phys = <&dsi_phy0>; phy-names ="dsi-phy"; qcom,dual-dsi-mode; @@ -159,8 +158,8 @@ Example: qcom,sync-dual-dsi; pinctrl-names = "default", "sleep"; - pinctrl-0 = <&mdss_dsi_active>; - pinctrl-1 = <&mdss_dsi_suspend>; + pinctrl-0 = <&dsi_active>; + pinctrl-1 = <&dsi_suspend>; ports { #address-cells = <1>; @@ -198,7 +197,7 @@ Example: }; }; - mdss_dsi_phy0: qcom,mdss_dsi_phy@fd922a00 { + dsi_phy0: dsi-phy@fd922a00 { compatible = "qcom,dsi-phy-28nm-hpm"; qcom,dsi-phy-index = <0>; reg-names = -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups 2016-06-10 10:46 ` [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja @ 2016-06-14 12:33 ` Rob Herring 0 siblings, 0 replies; 38+ messages in thread From: Rob Herring @ 2016-06-14 12:33 UTC (permalink / raw) To: Archit Taneja; +Cc: devicetree, linux-arm-msm, dri-devel On Fri, Jun 10, 2016 at 04:16:40PM +0530, Archit Taneja wrote: > Some cleanups: > > - Use simpler names for DT nodes in the example > - Use references instead of dumping Document links everywhere > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > .../devicetree/bindings/display/msm/dsi.txt | 45 +++++++++++----------- > 1 file changed, 22 insertions(+), 23 deletions(-) Acked-by: Rob Herring <robh@kernel.org> _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 02/10] drm/msm/mdp4: Clean up some MDP4 clocks 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-06-10 10:46 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 04/10] drm/msm/dsi: Modify port parsing Archit Taneja ` (4 subsequent siblings) 6 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja Fix some issues with MDP4 clocks: - mdp4_dtv_encoder tries to get "src_clk", which is a RCG(TV_SRC) in MSM8960 and APQ8064. This isn't something the driver should access or configure. Instead of this, configure the "mdp_clk" (MDP_TV_CLK), a branch clock in MMCC that has the TV_SRC as its parent. Setting rate/enabling the "mdp_clk" will eventually configure "src_clk", which is what we want. - Rename "mdp_clk" to "tv_clk" because that's slightly less confusing. - Rename "mdp_axi_clk" to "bus_clk" because that's what we do elsewhere too. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c | 31 ++++++++++--------------- drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 2 +- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c index 35ad78a..24258e3 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_dtv_encoder.c @@ -23,7 +23,6 @@ struct mdp4_dtv_encoder { struct drm_encoder base; - struct clk *src_clk; struct clk *hdmi_clk; struct clk *mdp_clk; unsigned long int pixclock; @@ -179,7 +178,6 @@ static void mdp4_dtv_encoder_disable(struct drm_encoder *encoder) */ mdp_irq_wait(&mdp4_kms->base, MDP4_IRQ_EXTERNAL_VSYNC); - clk_disable_unprepare(mdp4_dtv_encoder->src_clk); clk_disable_unprepare(mdp4_dtv_encoder->hdmi_clk); clk_disable_unprepare(mdp4_dtv_encoder->mdp_clk); @@ -208,19 +206,21 @@ static void mdp4_dtv_encoder_enable(struct drm_encoder *encoder) bs_set(mdp4_dtv_encoder, 1); - DBG("setting src_clk=%lu", pc); + DBG("setting mdp_clk=%lu", pc); - ret = clk_set_rate(mdp4_dtv_encoder->src_clk, pc); + ret = clk_set_rate(mdp4_dtv_encoder->mdp_clk, pc); if (ret) - dev_err(dev->dev, "failed to set src_clk to %lu: %d\n", pc, ret); - clk_prepare_enable(mdp4_dtv_encoder->src_clk); - ret = clk_prepare_enable(mdp4_dtv_encoder->hdmi_clk); - if (ret) - dev_err(dev->dev, "failed to enable hdmi_clk: %d\n", ret); + dev_err(dev->dev, "failed to set mdp_clk to %lu: %d\n", + pc, ret); + ret = clk_prepare_enable(mdp4_dtv_encoder->mdp_clk); if (ret) dev_err(dev->dev, "failed to enabled mdp_clk: %d\n", ret); + ret = clk_prepare_enable(mdp4_dtv_encoder->hdmi_clk); + if (ret) + dev_err(dev->dev, "failed to enable hdmi_clk: %d\n", ret); + mdp4_write(mdp4_kms, REG_MDP4_DTV_ENABLE, 1); mdp4_dtv_encoder->enabled = true; @@ -235,7 +235,7 @@ static const struct drm_encoder_helper_funcs mdp4_dtv_encoder_helper_funcs = { long mdp4_dtv_round_pixclk(struct drm_encoder *encoder, unsigned long rate) { struct mdp4_dtv_encoder *mdp4_dtv_encoder = to_mdp4_dtv_encoder(encoder); - return clk_round_rate(mdp4_dtv_encoder->src_clk, rate); + return clk_round_rate(mdp4_dtv_encoder->mdp_clk, rate); } /* initialize encoder */ @@ -257,13 +257,6 @@ struct drm_encoder *mdp4_dtv_encoder_init(struct drm_device *dev) DRM_MODE_ENCODER_TMDS, NULL); drm_encoder_helper_add(encoder, &mdp4_dtv_encoder_helper_funcs); - mdp4_dtv_encoder->src_clk = devm_clk_get(dev->dev, "src_clk"); - if (IS_ERR(mdp4_dtv_encoder->src_clk)) { - dev_err(dev->dev, "failed to get src_clk\n"); - ret = PTR_ERR(mdp4_dtv_encoder->src_clk); - goto fail; - } - mdp4_dtv_encoder->hdmi_clk = devm_clk_get(dev->dev, "hdmi_clk"); if (IS_ERR(mdp4_dtv_encoder->hdmi_clk)) { dev_err(dev->dev, "failed to get hdmi_clk\n"); @@ -271,9 +264,9 @@ struct drm_encoder *mdp4_dtv_encoder_init(struct drm_device *dev) goto fail; } - mdp4_dtv_encoder->mdp_clk = devm_clk_get(dev->dev, "mdp_clk"); + mdp4_dtv_encoder->mdp_clk = devm_clk_get(dev->dev, "tv_clk"); if (IS_ERR(mdp4_dtv_encoder->mdp_clk)) { - dev_err(dev->dev, "failed to get mdp_clk\n"); + dev_err(dev->dev, "failed to get tv_clk\n"); ret = PTR_ERR(mdp4_dtv_encoder->mdp_clk); goto fail; } diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c index f145d25..388663a 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c @@ -492,7 +492,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) goto fail; } - mdp4_kms->axi_clk = devm_clk_get(&pdev->dev, "mdp_axi_clk"); + mdp4_kms->axi_clk = devm_clk_get(&pdev->dev, "bus_clk"); if (IS_ERR(mdp4_kms->axi_clk)) { dev_err(dev->dev, "failed to get axi_clk\n"); ret = PTR_ERR(mdp4_kms->axi_clk); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 04/10] drm/msm/dsi: Modify port parsing 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-06-10 10:46 ` [PATCH v2 02/10] drm/msm/mdp4: Clean up some MDP4 clocks Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 05/10] drm/msm/dsi: Use generic PHY bindings Archit Taneja ` (3 subsequent siblings) 6 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The DSI interface is going to have two ports defined in its device node. The first port is always going to be the link between the MDP output and the input to DSI, the second port is going to be the link between the DSI output and the connected panel/bridge: ----- ----- ------- | MDP | ------> | DSI | ------> | Panel | ----- ----- ------- (Port 0) (Port 1) Until now, there was only one Port representing the output. Update the DSI host driver such that it parses Port #1 for a connected device. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/dsi/dsi_host.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index a3e47ad8..4f1335e 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1602,12 +1602,12 @@ static int dsi_host_parse_dt(struct msm_dsi_host *msm_host) } /* - * Get the first endpoint node. In our case, dsi has one output port - * to which the panel is connected. Don't return an error if a port - * isn't defined. It's possible that there is nothing connected to - * the dsi output. + * Get the endpoint of the output port of the DSI host. In our case, + * this is mapped to port number with reg = 1. Don't return an error if + * the remote endpoint isn't defined. It's possible that there is + * nothing connected to the dsi output. */ - endpoint = of_graph_get_next_endpoint(np, NULL); + endpoint = of_graph_get_endpoint_by_regs(np, 1, -1); if (!endpoint) { dev_dbg(dev, "%s: no endpoint\n", __func__); return 0; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 05/10] drm/msm/dsi: Use generic PHY bindings 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja ` (2 preceding siblings ...) 2016-06-10 10:46 ` [PATCH v2 04/10] drm/msm/dsi: Modify port parsing Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 06/10] drm/msm/dsi: Use a standard DT binding for data lanes Archit Taneja ` (2 subsequent siblings) 6 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The DSI host links to the DSI PHY device using a custom binding. Switch to the generic PHY bindings. The DSI PHY driver itself doesn't use the common PHY framework for now. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/dsi/dsi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 6edcd6f..ec572f8 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -29,7 +29,7 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi) struct platform_device *phy_pdev; struct device_node *phy_node; - phy_node = of_parse_phandle(pdev->dev.of_node, "qcom,dsi-phy", 0); + phy_node = of_parse_phandle(pdev->dev.of_node, "phys", 0); if (!phy_node) { dev_err(&pdev->dev, "cannot find phy device\n"); return -ENXIO; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 06/10] drm/msm/dsi: Use a standard DT binding for data lanes 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja ` (3 preceding siblings ...) 2016-06-10 10:46 ` [PATCH v2 05/10] drm/msm/dsi: Use generic PHY bindings Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja 2016-06-10 10:46 ` [PATCH v2 09/10] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja 6 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja A more standard DT binding describing data lanes already exists here: Documentation/devicetree/bindings/media/video-interfaces.txt Use this binding instead of "qcom,data-lane-map". One difference in the standard binding w.r.t to the existing binding is that it provides a logical to physical mapping instead of the other way round. Tweak the code to translate the data the way we want it. The MSM DSI DT bindings aren't used anywhere at the moment, so it's okay to update this property. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- drivers/gpu/drm/msm/dsi/dsi_host.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 4f1335e..e6a8cd1 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1543,7 +1543,7 @@ static int dsi_host_parse_lane_data(struct msm_dsi_host *msm_host, u32 lane_map[4]; int ret, i, len, num_lanes; - prop = of_find_property(ep, "qcom,data-lane-map", &len); + prop = of_find_property(ep, "data-lanes", &len); if (!prop) { dev_dbg(dev, "failed to find data lane mapping\n"); return -EINVAL; @@ -1558,7 +1558,7 @@ static int dsi_host_parse_lane_data(struct msm_dsi_host *msm_host, msm_host->num_data_lanes = num_lanes; - ret = of_property_read_u32_array(ep, "qcom,data-lane-map", lane_map, + ret = of_property_read_u32_array(ep, "data-lanes", lane_map, num_lanes); if (ret) { dev_err(dev, "failed to read lane data\n"); @@ -1573,8 +1573,19 @@ static int dsi_host_parse_lane_data(struct msm_dsi_host *msm_host, const int *swap = supported_data_lane_swaps[i]; int j; + /* + * the data-lanes array we get from DT has a logical->physical + * mapping. The "data lane swap" register field represents + * supported configurations in a physical->logical mapping. + * Translate the DT mapping to what we understand and find a + * configuration that works. + */ for (j = 0; j < num_lanes; j++) { - if (swap[j] != lane_map[j]) + if (lane_map[j] < 0 || lane_map[j] > 3) + dev_err(dev, "bad physical lane entry %u\n", + lane_map[j]); + + if (swap[lane_map[j]] != j) break; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja ` (4 preceding siblings ...) 2016-06-10 10:46 ` [PATCH v2 06/10] drm/msm/dsi: Use a standard DT binding for data lanes Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 2016-06-14 12:31 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 09/10] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja 6 siblings, 1 reply; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The DSI node now has two ports that describe the connection between the MDP interface output and the DSI input, and the connection between the DSI output and the connected panel/bridge. Update the properties and the example. Also, use generic PHY bindings instead of the custom one. Signed-off-by: Archit Taneja <architt@codeaurora.org> --- v2: - Use hyphen for dsi phy name .../devicetree/bindings/display/msm/dsi.txt | 45 ++++++++++++++++------ 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index 9d2d2bb..6442408 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -26,8 +26,14 @@ Required properties: - vdd-supply: phandle to vdd regulator device node - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node -- qcom,dsi-phy: phandle to DSI PHY device node +- phys: phandle to DSI PHY device node +- phy-names: the name of the corresponding PHY device - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) +- ports: Contains 2 DSI controller ports as child nodes. Each port contains + an endpoint subnode as defined in these documents: + + Documentation/devicetree/bindings/graph.txt + Documentation/devicetree/bindings/media/video-interfaces.txt Optional properties: - panel@0: Node of panel connected to this DSI controller. @@ -44,11 +50,14 @@ Optional properties: - pinctrl-names: the pin control state names; should contain "default" - pinctrl-0: the default pinctrl state (active) - pinctrl-n: the "sleep" pinctrl state -- port: DSI controller output port, containing one endpoint subnode. +- ports: contains DSI controller input and output ports as children, each + containing one endpoint subnode. DSI Endpoint properties: - - remote-endpoint: set to phandle of the connected panel's endpoint. + - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's + input endpoint. For port@1, set to the MDP interface output. See Documentation/devicetree/bindings/graph.txt for device graph info. + - data-lanes: this describes how the physical DSI data lanes are mapped to the logical lanes on the given platform. The value contained in index n describes what physical lane is mapped to the logical lane n @@ -129,7 +138,8 @@ Example: vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; - qcom,dsi-phy = <&mdss_dsi_phy0>; + phys = <&mdss_dsi_phy0>; + phy-names ="dsi-phy"; qcom,dual-dsi-mode; qcom,master-dsi; @@ -139,6 +149,26 @@ Example: pinctrl-0 = <&mdss_dsi_active>; pinctrl-1 = <&mdss_dsi_suspend>; + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + dsi0_in: endpoint { + remote-endpoint = <&mdp_intf1_out>; + }; + }; + + port@1 { + reg = <1>; + dsi0_out: endpoint { + remote-endpoint = <&panel_in>; + data-lanes = <0 1 2 3>; + }; + }; + }; + panel: panel@0 { compatible = "sharp,lq101r1sx01"; reg = <0>; @@ -153,13 +183,6 @@ Example: }; }; }; - - port { - dsi0_out: endpoint { - remote-endpoint = <&panel_in>; - data-lanes = <0 1 2 3>; - }; - }; }; mdss_dsi_phy0: qcom,mdss_dsi_phy@fd922a00 { -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
* Re: [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings 2016-06-10 10:46 ` [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja @ 2016-06-14 12:31 ` Rob Herring 0 siblings, 0 replies; 38+ messages in thread From: Rob Herring @ 2016-06-14 12:31 UTC (permalink / raw) To: Archit Taneja Cc: robdclark, linux-arm-msm, dri-devel, heiko, p.zabel, devicetree On Fri, Jun 10, 2016 at 04:16:38PM +0530, Archit Taneja wrote: > The DSI node now has two ports that describe the connection between the > MDP interface output and the DSI input, and the connection between the DSI > output and the connected panel/bridge. Update the properties and the > example. > > Also, use generic PHY bindings instead of the custom one. > > Signed-off-by: Archit Taneja <architt@codeaurora.org> > --- > v2: > - Use hyphen for dsi phy name > > .../devicetree/bindings/display/msm/dsi.txt | 45 ++++++++++++++++------ > 1 file changed, 34 insertions(+), 11 deletions(-) Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 38+ messages in thread
* [PATCH v2 09/10] dt-bindings: msm/dsi: Add assigned clocks bindings 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja ` (5 preceding siblings ...) 2016-06-10 10:46 ` [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja @ 2016-06-10 10:46 ` Archit Taneja 6 siblings, 0 replies; 38+ messages in thread From: Archit Taneja @ 2016-06-10 10:46 UTC (permalink / raw) To: robdclark, robh Cc: linux-arm-msm, dri-devel, heiko, p.zabel, devicetree, Archit Taneja The PLL in the DSI PHY block generates 2 clock outputs (Byte and Pixel clocks) that are fed into the Multimedia Clock Controller (MMCC). The MMCC uses these as source clocks for some of its RCGs to generate clocks that finally feed to the DSI host controller. Use the assigned clocks DT bindings to set up the MMCC RCGs that feed to the DSI host. Use the DSI PHY provided clocks to set up the parents of these assigned clocks. Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Archit Taneja <architt@codeaurora.org> --- Documentation/devicetree/bindings/display/msm/dsi.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index 6442408..f458929 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt @@ -12,7 +12,6 @@ Required properties: - interrupts: The interrupt signal from the DSI block. - power-domains: Should be <&mmcc MDSS_GDSC>. - clocks: device clocks - See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. - clock-names: the following clocks are required: * "mdp_core_clk" * "iface_clk" @@ -23,6 +22,10 @@ Required properties: * "core_clk" For DSIv2, we need an additional clock: * "src_clk" +- assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. +- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided + by a DSI PHY block. + See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. - vdd-supply: phandle to vdd regulator device node - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node @@ -96,6 +99,8 @@ Required properties: * "dsi_pll" * "dsi_phy" * "dsi_phy_regulator" +- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating + 2 clocks: A byte clock (index 0), and a pixel clock (index 1). - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should be 0 or 1, since we have 2 DSI PHYs at most for now. - power-domains: Should be <&mmcc MDSS_GDSC>. @@ -134,6 +139,14 @@ Example: <&mmcc MDSS_AHB_CLK>, <&mmcc MDSS_MDP_CLK>, <&mmcc MDSS_PCLK0_CLK>; + + assigned-clocks = + <&mmcc BYTE0_CLK_SRC>, + <&mmcc PCLK0_CLK_SRC>; + assigned-clock-parents = + <&mdss_dsi_phy0 0>, + <&mdss_dsi_phy0 1>; + vdda-supply = <&pma8084_l2>; vdd-supply = <&pma8084_l22>; vddio-supply = <&pma8084_l12>; @@ -197,6 +210,7 @@ Example: <0xfd922d80 0x7b>; clock-names = "iface_clk"; clocks = <&mmcc MDSS_AHB_CLK>; + #clock-cells = <1>; vddio-supply = <&pma8084_l12>; qcom,dsi-phy-regulator-ldo-mode; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 38+ messages in thread
end of thread, other threads:[~2016-06-16 5:08 UTC | newest] Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-05-03 10:57 [PATCH 0/9] drm/msm: Fix issues with DT bindings Archit Taneja 2016-05-03 10:57 ` [PATCH 1/9] drm/msm: Get mdss components via parsing ports Archit Taneja 2016-05-03 10:57 ` [PATCH 2/9] drm/msm: Drop the gpu binding Archit Taneja 2016-05-03 12:42 ` Rob Herring 2016-05-04 6:45 ` Archit Taneja 2016-05-03 10:57 ` [PATCH 3/9] drm/msm/mdp: mdp4: Update LCDC/LVDS port parsing Archit Taneja 2016-05-03 13:50 ` Philipp Zabel 2016-05-03 10:57 ` [PATCH 4/9] dt-bindings: msm/mdp: Remove connector and gpu bindings Archit Taneja 2016-05-04 13:38 ` Rob Herring 2016-05-04 17:49 ` Archit Taneja [not found] ` <1462273081-5814-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-05-03 10:57 ` [PATCH 5/9] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja 2016-05-03 14:05 ` Philipp Zabel 2016-05-04 8:11 ` Archit Taneja 2016-05-03 10:58 ` [PATCH 8/9] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja 2016-05-03 14:02 ` Philipp Zabel 2016-05-04 8:09 ` Archit Taneja 2016-05-03 10:57 ` [PATCH 6/9] drm/msm/dsi: Modify port parsing Archit Taneja 2016-05-03 10:57 ` [PATCH 7/9] drm/msm/dsi: Use generic PHY bindings Archit Taneja 2016-05-03 10:58 ` [PATCH 9/9] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja 2016-05-04 13:44 ` Rob Herring 2016-05-04 18:04 ` Archit Taneja [not found] ` <572A39B7.5020008-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-05-11 14:08 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 00/10] drm/msm: Fix issues with DT bindings Archit Taneja [not found] ` <1465555600-25742-1-git-send-email-architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-06-10 10:46 ` [PATCH v2 01/10] drm/msm/mdp5: Don't get source of MDP core clock Archit Taneja 2016-06-10 10:46 ` [PATCH v2 03/10] dt-bindings: msm/mdp: Fix up clock related bindings Archit Taneja 2016-06-13 19:03 ` Rob Herring 2016-06-16 5:08 ` Archit Taneja 2016-06-10 10:46 ` [PATCH v2 07/10] dt-bindings: msm/dsi: Use standard data lanes binding Archit Taneja 2016-06-13 19:53 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 10/10] dt-bindings: msm/dsi: Some binding doc cleanups Archit Taneja 2016-06-14 12:33 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 02/10] drm/msm/mdp4: Clean up some MDP4 clocks Archit Taneja 2016-06-10 10:46 ` [PATCH v2 04/10] drm/msm/dsi: Modify port parsing Archit Taneja 2016-06-10 10:46 ` [PATCH v2 05/10] drm/msm/dsi: Use generic PHY bindings Archit Taneja 2016-06-10 10:46 ` [PATCH v2 06/10] drm/msm/dsi: Use a standard DT binding for data lanes Archit Taneja 2016-06-10 10:46 ` [PATCH v2 08/10] dt-bindings: msm/dsi: Modify port and PHY bindings Archit Taneja 2016-06-14 12:31 ` Rob Herring 2016-06-10 10:46 ` [PATCH v2 09/10] dt-bindings: msm/dsi: Add assigned clocks bindings Archit Taneja
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.