Re: [PATCH v3 3/3] platform/surface: Add OF support

Konrad Dybcio
2024-08-30T12:58:04Z

On 28.08.2024 9:06 PM, Andy Shevchenko wrote:
> On Wed, Aug 28, 2024 at 8:40 PM Maximilian Luz <luzmaximilian@gmail.com> wrote:
>> On 8/28/24 6:56 PM, Andy Shevchenko wrote:
>>> On Wed, Aug 28, 2024 at 12:10 PM Maximilian Luz <luzmaximilian@gmail.com> wrote:
>
> ...
>
>>> Yes, and software nodes for DT are quite strange things! Why can't you
>>> simply fix the DT to begin with?
>>
>> For the ARM/DT variants we could do that. But we still have to deal with
>> the x86/ACPI ones here.
>
> So, then fix it there! Currently it's an abuse of software nodes
> inside the Linux kernel.
>
>> So for me it makes more sense to have it unified
>> and just deal with everything in this module.
>
> I understand the desire, but DT is DT and ACPI is ACPI, they are
> different despite having some common APIs in the Linux kernel.
> Moreover, DT has a validation tools and everything, making that being
> a software nodes has at least these disadvantages:
> - no official schema that must be supported and users are known of
> - no validation done
> - bloating of the Linux kernel binary and hence memory footprint

Arguably the last point isn't very strong.. DT also has to store some
strings and pointers to represent devices

>
>> Also, if we consider that at some point we might get ACPI PEP support (I
>> know, far fetched right now): With that, ACPI on ARM might be feasible
>> and then we'd have to manage the same thing in two places...
>
> This (PEP) is something I have no knowledge about. But I think it's
> still orthogonal to the software nodes usage.

The PEP (Power Engine Plugin) unfortunately is the reason we can't have
ACPI-based boot on WoA platforms.. This two-or-three-digit megabyte
Windows driver hardcodes almost everything related to the on-SoC power
management (buses, clocks, etc.) and only uses the bare minimum ACPI it
needs to connect devices to a bus or get notifications on standard events..

>
>> And lastly, the EC subdevices are quite contained and I don't see them
>> interacting with any other components in the DT, so it's more of a
>> stylistic choice where to put them.
>
> They are still part of hardware and DT describes hardware.

Unfortunately the "Surface Aggregator Module" is just a firmware
exposed on some range of MCUs running MSFT's code..

Given how.. peculiarly the "bus" that it hosts """devices""" on is
constructed (5-level-deep hierarchy without it making much sense
beyond maaaybe the first two), it's not really easy to describe in
DT in a way that would be both true to the bigger picture and make
enough sense to convince the DT maintainers, I don't think

Konrad