From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tony Lindgren <tony@atomide.com>
Cc: Nishanth Menon <nm@ti.com>, Tero Kristo <t-kristo@ti.com>,
Suman Anna <s-anna@ti.com>, Dave Gerlach <d-gerlach@ti.com>,
Keerthy <j-keerthy@ti.com>,
Tomi Valkeinen <tomi.valkeinen@ti.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Andrew F . Davis" <afd@ti.com>,
Peter Ujfalusi <peter.ujfalusi@ti.com>,
Faiz Abbas <faiz_abbas@ti.com>, Jyri Sarha <jsarha@ti.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
Roger Quadros <rogerq@ti.com>
Subject: Re: [PATCH 1/3] drm/omap: Prepare DSS for probing without legacy platform data
Date: Mon, 24 Feb 2020 23:40:08 +0200 [thread overview]
Message-ID: <20200224214008.GD16163@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20200224191230.30972-2-tony@atomide.com>
Hi Tony,
Thank you for the patch.
On Mon, Feb 24, 2020 at 11:12:28AM -0800, Tony Lindgren wrote:
> In order to probe display subsystem (DSS) components with ti-sysc
> interconnect target module without legacy platform data and using
> devicetree, we need to update dss probing a bit.
>
> In the device tree, we will be defining the data also for the interconnect
> target modules as DSS really is a private interconnect. There is some
> information about that in 4460 TRM in "Figure 10-3. DSS Integration" for
> example where it mentions "32-bit interconnect (SLX)".
>
> The changes we need to make are:
>
> 1. Parse also device tree subnodes for the compatible property fixup
>
> 2. Update the component code to consider device tree subnodes
>
> Cc: dri-devel@lists.freedesktop.org
> Cc: Jyri Sarha <jsarha@ti.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>
> This is needed for dropping DSS platform data that I'll be posting
> seprately. If this looks OK, can you guys please test and ack?
>
> ---
> drivers/gpu/drm/omapdrm/dss/dss.c | 25 ++++++++++++++++---
> .../gpu/drm/omapdrm/dss/omapdss-boot-init.c | 25 +++++++++++++------
> 2 files changed, 39 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -1339,9 +1339,15 @@ static int dss_component_compare(struct device *dev, void *data)
> return dev == child;
> }
>
> +struct dss_component_match_data {
> + struct device *dev;
> + struct component_match **match;
> +};
> +
> static int dss_add_child_component(struct device *dev, void *data)
> {
> - struct component_match **match = data;
> + struct dss_component_match_data *cmatch = data;
> + struct component_match **match = cmatch->match;
>
> /*
> * HACK
> @@ -1352,7 +1358,17 @@ static int dss_add_child_component(struct device *dev, void *data)
> if (strstr(dev_name(dev), "rfbi"))
> return 0;
>
> - component_match_add(dev->parent, match, dss_component_compare, dev);
> + /*
> + * Handle possible interconnect target modules defined within the DSS.
> + * The DSS components can be children of an interconnect target module
> + * after the device tree has been updated for the module data.
> + * See also omapdss_boot_init() for compatible fixup.
> + */
> + if (strstr(dev_name(dev), "target-module"))
> + return device_for_each_child(dev, cmatch,
> + dss_add_child_component);
> +
> + component_match_add(cmatch->dev, match, dss_component_compare, dev);
>
> return 0;
> }
> @@ -1395,6 +1411,7 @@ static int dss_probe_hardware(struct dss_device *dss)
> static int dss_probe(struct platform_device *pdev)
> {
> const struct soc_device_attribute *soc;
> + struct dss_component_match_data cmatch;
> struct component_match *match = NULL;
> struct resource *dss_mem;
> struct dss_device *dss;
> @@ -1472,7 +1489,9 @@ static int dss_probe(struct platform_device *pdev)
>
> omapdss_gather_components(&pdev->dev);
>
> - device_for_each_child(&pdev->dev, &match, dss_add_child_component);
> + cmatch.dev = &pdev->dev;
> + cmatch.match = &match;
> + device_for_each_child(&pdev->dev, &cmatch, dss_add_child_component);
>
> r = component_master_add_with_match(&pdev->dev, &dss_component_ops, match);
> if (r)
> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c b/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c
> --- a/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c
> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c
> @@ -183,9 +183,24 @@ static const struct of_device_id omapdss_of_fixups_whitelist[] __initconst = {
> {},
> };
>
> +static void __init omapdss_find_children(struct device_node *np)
> +{
> + struct device_node *child;
> +
> + for_each_available_child_of_node(np, child) {
> + if (!of_find_property(child, "compatible", NULL))
> + continue;
> +
> + omapdss_walk_device(child, true);
> +
> + if (of_device_is_compatible(child, "ti,sysc"))
> + omapdss_find_children(child);
> + }
> +}
> +
> static int __init omapdss_boot_init(void)
> {
> - struct device_node *dss, *child;
> + struct device_node *dss;
>
> INIT_LIST_HEAD(&dss_conv_list);
>
> @@ -195,13 +210,7 @@ static int __init omapdss_boot_init(void)
> return 0;
>
> omapdss_walk_device(dss, true);
> -
> - for_each_available_child_of_node(dss, child) {
> - if (!of_find_property(child, "compatible", NULL))
> - continue;
> -
> - omapdss_walk_device(child, true);
> - }
> + omapdss_find_children(dss);
>
> while (!list_empty(&dss_conv_list)) {
> struct dss_conv_node *n;
--
Regards,
Laurent Pinchart
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-02-24 21:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-24 19:12 [PATCH 0/3] ti-sysc changes for probing DSS with dts data Tony Lindgren
2020-02-24 19:12 ` [PATCH 1/3] drm/omap: Prepare DSS for probing without legacy platform data Tony Lindgren
2020-02-24 21:40 ` Laurent Pinchart [this message]
2020-02-24 23:31 ` Sebastian Reichel
2020-02-24 23:43 ` Tony Lindgren
2020-02-27 17:44 ` Tony Lindgren
2020-03-02 10:28 ` Tomi Valkeinen
2020-03-02 15:01 ` Tony Lindgren
2020-03-03 9:18 ` Tomi Valkeinen
2020-03-03 15:36 ` Tony Lindgren
2020-02-24 19:12 ` [PATCH 2/3] bus: ti-sysc: Detect display subsystem related devices Tony Lindgren
2020-02-24 19:12 ` [PATCH 3/3] bus: ti-sysc: Implement display subsystem reset quirk Tony Lindgren
2020-03-03 6:02 ` Tomi Valkeinen
2020-03-03 15:13 ` Tony Lindgren
2020-03-03 15:35 ` Tomi Valkeinen
2020-03-03 15:44 ` Tony Lindgren
2020-03-03 15:49 ` Tony Lindgren
2020-03-04 7:02 ` Tomi Valkeinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200224214008.GD16163@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=afd@ti.com \
--cc=d-gerlach@ti.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=faiz_abbas@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=j-keerthy@ti.com \
--cc=jsarha@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=nm@ti.com \
--cc=peter.ujfalusi@ti.com \
--cc=rogerq@ti.com \
--cc=s-anna@ti.com \
--cc=t-kristo@ti.com \
--cc=tomi.valkeinen@ti.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).