From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Sui Jingfeng <sui.jingfeng@linux.dev>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
Daniel Scally <djrscally@gmail.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-acpi@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org,
Vladimir Oltean <vladimir.oltean@nxp.com>
Subject: Re: [PATCH] software node: Implement device_get_match_data fwnode callback
Date: Wed, 20 Mar 2024 22:28:25 +0200 [thread overview]
Message-ID: <ZftG6Q5AaG71dhWq@smile.fi.intel.com> (raw)
In-Reply-To: <9ced20e0-dfbd-4337-b5df-223b7baffd9e@linux.dev>
On Thu, Mar 21, 2024 at 03:22:05AM +0800, Sui Jingfeng wrote:
> On 2024/3/20 18:39, Andy Shevchenko wrote:
> > On Tue, Mar 19, 2024 at 07:42:22AM +0800, Sui Jingfeng wrote:
> > > This makes it possible to support (and/or test) a few drivers that
> > > originates from DT World on the x86-64 platform. Originally, those
> > > drivers using the of_device_get_match_data() function to get match
> > > data. For example, drivers/gpu/drm/bridge/simple-bridge.c and
> > > drivers/gpu/drm/bridge/display-connector.c. Those drivers works very
> > > well in the DT world, however, there is no counterpart to
> > > of_device_get_match_data() when porting them to the x86 platform,
> > > because x86 CPUs lack DT support.
> > This is not true.
> >
> > First of all, there is counter part that called device_get_match_data().
>
> Are you means that the acpi_fwnode_device_get_match_data() implementation?
> As the fwnode API framework has three backend: OF, ACPI, and software node.
> If you are hinting me that the acpi backend has the .device_get_match_data
> implemented. Then you are right.
Yes, for all firmware property providers there is a callback.
> > Second, there *is* DT support for the _selected_ x86 based platforms.
>
> Yeah, you maybe right again here. I guess you means that some special
> hardware or platform may have a *limited* support?
>
> Can you pointed it out for study of learning purpose?
Point to what? This arch/x86/kernel/devicetree.c ?
> To speak precisely, there are some drm display bridges drivers are
> lack of the DT support on X86. Those display bridges belong to the
> device drivers catalogs.
Do they support Device Tree? Do you want to enable them in ACPI environment?
> OK, I will update my commit message at the next version if possible,
> and try my best to describe the problem precisely.
Please do.
> > > By replacing it with device_get_match_data() and creating a software
> > > graph that mimics the OF graph, everything else works fine, except that
> > > there isn't an out-of-box replacement for the of_device_get_match_data()
> > > function. Because the software node backend of the fwnode framework lacks
> > > an implementation for the device_get_match_data callback.
> > .device_get_match_data
> >
> > > Implement device_get_match_data fwnode callback fwnode callback to fill
> > .device_get_match_data
>
> OK, thanks a lot.
>
> > > this gap. Device drivers or platform setup codes are expected to provide
> > > a "compatible" string property. The value of this string property is used
> > > to match against the compatible entries in the of_device_id table. Which
> > > is consistent with the original usage style.
> > Why do you need to implement the graph in the board file?
>
> It can be inside the chip, there is no clear cut.\
Which chip? Flash memory / ROM or you meant something like FPGA here?
For the latter there is another discussion on how to use DT overlays
in ACPI-enabled environments for the FPGA configurations.
> I means that
> the graph(including fwnode graph, OF graph or swnode graph) can
> be used at anywhere. The examples given here may lead you to
> think it is board specific, but it is not limited to board specific.
>
> fwnode graph, OF graph and swnode graph, all of them are implements
> of the graph. Its common that different hardware vendors bought the
> some IP and has been integrated it into their SoC. So it can be inside
> of the chip if you want *code sharing*.
>
>
> Back to the patch itself, we want to keep the three backends aligned as much
> as possible. Is this reasonable enough?
Yes, but it misses details about board files approach. See also above.
...
> > Have you seen this discussion?
> > https://lore.kernel.org/lkml/20230223203713.hcse3mkbq3m6sogb@skbuf/
>
> I really didn't have seen that thread before this patch is sent,
> I'm a graphic developer, I'm mainly focus on graphics domain.
>
> Previously, I have implemented similar functionality at the drivers
> layer [1][2]. But as the instances grows, I realized there is a
> risk to introducing *boilerplate*. So I send this patch. [1][2] can
> be drop if this patch could be merged.
>
> [1] https://patchwork.freedesktop.org/patch/575414/?series=129040&rev=1
>
> [2] https://patchwork.freedesktop.org/patch/575411/?series=129040&rev=1
>
>
> After a brief skim, I guess we encounter similar problems. Oops!
> In a nutshell, there is a need to *emulation* on X86 platform,
> to suit the need of device-driver coding style of DT world.
What does "emulation" mean? Can you elaborate a bit?
> Besides, at the swnode backend layer, we should not call
> fwnode_property_read_string(), instead, we should usethe
> property_entry_read_string_array() function. Because the
> fwnode_property_read_string() is belong to upper layer.
> While backend implementations should call functions from
> bottom layer only.
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2024-03-20 20:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-18 23:42 [PATCH] software node: Implement device_get_match_data fwnode callback Sui Jingfeng
2024-03-20 10:39 ` Andy Shevchenko
2024-03-20 19:22 ` Sui Jingfeng
2024-03-20 20:28 ` Andy Shevchenko [this message]
2024-03-22 9:00 ` Sui Jingfeng
2024-03-22 16:14 ` Andy Shevchenko
2024-03-22 17:43 ` Sui Jingfeng
2024-03-22 18:05 ` Andy Shevchenko
2024-03-22 18:12 ` Sui Jingfeng
2024-03-22 18:16 ` Andy Shevchenko
2024-03-22 18:30 ` Sui Jingfeng
2024-03-25 13:41 ` Andy Shevchenko
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=ZftG6Q5AaG71dhWq@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=djrscally@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=sui.jingfeng@linux.dev \
--cc=vladimir.oltean@nxp.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