On 3/8/22 11:07, Jagan Teki wrote:
On Tue, Mar 8, 2022 at 3:19 PM Marek Vasut marex@denx.de wrote:
On 3/8/22 09:03, Jagan Teki wrote:
Hi,
[...]
@@ -314,7 +321,9 @@ static const struct drm_bridge_funcs chipone_bridge_funcs = { static int chipone_parse_dt(struct chipone *icn) { struct device *dev = icn->dev;
struct device_node *endpoint; struct drm_panel *panel;
int dsi_lanes; int ret; icn->vdd1 = devm_regulator_get_optional(dev, "vdd1");
@@ -350,15 +359,42 @@ static int chipone_parse_dt(struct chipone *icn) return PTR_ERR(icn->enable_gpio); }
endpoint = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0);
dsi_lanes = of_property_count_u32_elems(endpoint, "data-lanes");
icn->host_node = of_graph_get_remote_port_parent(endpoint);
of_node_put(endpoint);
if (!icn->host_node)
return -ENODEV;
The non-ports-based OF graph returns a -19 example on the Allwinner Display pipeline in R16 [1].
We need to have a helper to return host_node for non-ports as I have done it for drm_of_find_bridge.
The link points to a patch marked "DO NOT MERGE", maybe that patch is missing the DSI host port@0 OF graph link ? Both port@0 and port@1 are required, see:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Docu...
What is "non-ports-based OF graph" ?
I don't see drm_of_find_bridge() in linux-next , what is that ?
port@0 is optional as some of the DSI host OF-graph represent the bridge or panel as child nodes instead of ports. (i think dt-binding has to fix it to make port@0 optional)
The current upstream DT binding document says:
required: - port@0 - port@1
So port@0 is mandatory.
So I don't think any change is needed to this patch ?
Example OF-graph is on the commit message. https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/d...
It seems the current upstream DT bindings only support DSI hosts which do provide an endpoint, because port@0 is required per DT binding document. If you want to support the other options as listed in the aforementioned commit, then you would have to extend this driver and its bindings, but that is out of scope of this series.