public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Udit Kumar <udit.kumar@nxp.com>
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 10:13:47 +0000	[thread overview]
Message-ID: <CAKv+Gu8aEt8TjhCvyCu63uCho7nz+FCuh4sGjDL21jWdxQjUXQ@mail.gmail.com> (raw)
In-Reply-To: <AM6PR0402MB3334794677B97E4991BC174091230@AM6PR0402MB3334.eurprd04.prod.outlook.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.

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.

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.

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 10:09 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 [this message]
2017-11-21 11:32       ` Udit Kumar
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=CAKv+Gu8aEt8TjhCvyCu63uCho7nz+FCuh4sGjDL21jWdxQjUXQ@mail.gmail.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