public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Udit Kumar <udit.kumar@nxp.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Varun Sethi <V.Sethi@nxp.com>,
	Daniel Thompson <daniel.thompson@linaro.org>,
	Graeme Gregory <graeme.gregory@linaro.org>
Subject: Re: [RFC] ACPI table HID/CID allocation
Date: Tue, 21 Nov 2017 11:32:43 +0000	[thread overview]
Message-ID: <AM6PR0402MB333426686BCD40B796CB3C4191230@AM6PR0402MB3334.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <CAKv+Gu8aEt8TjhCvyCu63uCho7nz+FCuh4sGjDL21jWdxQjUXQ@mail.gmail.com>

 
> On 21 November 2017 at 09:59, Udit Kumar <udit.kumar@nxp.com> wrote:
> > Thanks Ard.
> > Below table was for example. I am not converting whole DT to ACPI
> > tables :) My idea is to reduce Linux patches for probing as possible.
> > Also keeping firmware and OS separately then Let firmware expose both
> > way (HID and PRP00001) and Linux to decide binding
> 
> No.
> 
> You are still assuming ACPI and DT device drivers bind at the same level, and
> they don't.

No, my above comments was just limited to binding. 
Right, here device driver should know that device is present in system, 
I see probe function (device-driver binding) is way to know this. 
Then driver can execute AML methods exposed by firmware.
 
> An ACPI device has AML methods to manage power state and perform other
> device related low-level tasks. The device driver has no knowledge of the
> hardware beyond what it needs to invoke those abstract methods.

You meant, If we need to update driver for AML methods then why not to update binding as well . ?

On side track, 
 With limited search,  I got many each driver is having (acpi_id and of_id), 
looks, acpi support is added on the top of DT flavored drivers.
and therefore acpi tables are following the same.
Sorry to say, reference I am looking at (edk2-platform) JunoPkg and VExpressPkg, 
Has following devices has description similar to Device tree 
    Device (NET0) {
    Device (SREG) {
    Device (VIRT) {
   Device(KMI0) {
   Device(ETH0) {
Where no AML method is exposed. Then I expect OS driver to manage this device.
While grepping over few other edk2-platforms.  Looks some of methods 
are abstracted, not whole device. 


> A DT device describes everything in detail, and requires clock and regulator
> drivers and other bits and pieces that are tightly coupled to details of the
> hardware.
> 
> So now, you have the worst of both worlds:
> 
> - you need to implement all of this in firmware so ACPI can support it,
> - you have to expose the internals to the OS so DT can support it.

Yes, for time being or may be longer, DT support needs to be there 
along with ACPI introduction.

Are you suggesting here to abstract whole device details from 
OS and expose AML methods to be used by device driver. 
And maintain two drivers instead of fitting DT style driver into ACPI world ?
 
> The result is that you lose *all* of the benefits of ACPI, because the power of
> the abstraction is that you can modify the low-level implementation on the
> firmware side without the need for modifying the OS. *That* is the value
> proposition of ACPI, the ability to run last year's OS on this year's hardware.


> Implementing ACPI in the way you propose is absolutely pointless, sorry to be
> harsh about it.
> 
> --
> Ard.
> 
> 
> > Please see inline as well
> >
> > Regards
> > Udit
> >
> >> -----Original Message-----
> >> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]
> >> Sent: Tuesday, November 21, 2017 3:08 PM
> >> To: Udit Kumar <udit.kumar@nxp.com>
> >> Cc: Leif Lindholm <leif.lindholm@linaro.org>; edk2-devel@lists.01.org; Varun
> >> Sethi <V.Sethi@nxp.com>; Daniel Thompson <daniel.thompson@linaro.org>;
> >> Graeme Gregory <graeme.gregory@linaro.org>
> >> Subject: Re: [RFC] ACPI table HID/CID allocation
> >>
> >> On 21 November 2017 at 09:19, Udit Kumar <udit.kumar@nxp.com> wrote:
> >> > Hi,
> >> >
> >> > I am enabling ACPI on NXP platform , In order to do minimal changes in
> >> > Linux driver for device-driver binding.
> >> >
> >> > I want to use PRP0001 device as CID and HID as actual (NXP allocated HID).
> >> >
> >> > So that Linux can bind with PRP0001 and  compatible field, where as
> >> > other OS (Window etc) can rely on HID.
> >> >
> >> > Below is sample, ACPI table for SPI controller and its slave device.
> >> >
> >> >
> >> >
> >> > Hope this approach is ok ?
> >> >
> >>
> >> No, it is not.
> >>
> >> Architecting an ACPI platform is not a matter of taking a device tree and
> >> converting each node into an ACPI device.
> >
> > No , no, Here I am not converting everything from DT to ACPI
> >
> >> Linux/DT makes no assumptions about the presence of firmware. This means
> >> most device drivers have to manage clocks, regulators etc because they will
> not
> >> be in a known state. Also, the OS can own all devices in the system.
> >
> > Thanks to Linux documentation , I noted this, During hand off ACPI
> > firmware needs to ensure proper clocking.
> >
> >> Linux/ACPI relies on the firmware to set up clocks and regulators, and uses
> >> abstract firmware methods to manage power states etc. Also, due to the
> >> dependency on UEFI, things like the RTC and NOR flash are not exposed to
> the
> >> OS via device nodes, but via UEFI runtime services.
> >
> > Agreed, RTC and NOR (containing firmware)  should not exposed to Linux or
> OS.
> >
> >> In a nutshell, the difference between ACPI and DT is that the handoff point
> >> between the OS and the firmware is at a different abstraction level.
> >>
> >> So no, it is not ok to use PRP0001 + compatible for everything. It may be
> >> acceptable in some exceptional cases, but you will have to explain why.
> >> Everything else should use proper ACPI bindings.
> >
> > HID is not going away , I am keeping with PRP0001 + compatible
> > and let linux driver to decide what to use.
> >
> > If PRP0001 + compatible is restricted or meant for limited use
> > then I can assign HID for NXP devices or say driver managed by NXP.
> > For other vendors, will this be accepted to have HID something like NXP00xx
> ??
> >
> >> --
> >> Ard.

  reply	other threads:[~2017-11-21 11:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21  9:19 [RFC] ACPI table HID/CID allocation Udit Kumar
2017-11-21  9:38 ` Ard Biesheuvel
2017-11-21  9:59   ` Udit Kumar
2017-11-21 10:13     ` Ard Biesheuvel
2017-11-21 11:32       ` Udit Kumar [this message]
2017-11-21 12:29         ` Ard Biesheuvel
2017-11-21 13:24           ` Udit Kumar
2017-11-21 14:03             ` Ard Biesheuvel
2017-11-21 18:10               ` Udit Kumar
2017-11-22 11:30                 ` Daniel Thompson
2017-11-22 13:39                   ` Udit Kumar
2017-11-22 17:34                     ` Andrew Fish
2017-11-25 12:40                       ` Udit Kumar
2017-11-22 19:39                   ` Ard Biesheuvel
2017-11-22 20:11                     ` Daniel Thompson
2017-11-25 12:56                       ` Udit Kumar
2017-11-25 19:41                         ` Andrew Fish
2017-11-26  8:35                           ` Udit Kumar
2017-11-27 12:13                         ` Daniel Thompson
2017-11-27 13:31                           ` Udit Kumar
2017-11-25 12:47                     ` Udit Kumar

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-list 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=AM6PR0402MB333426686BCD40B796CB3C4191230@AM6PR0402MB3334.eurprd04.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /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