Re: [PATCH v2 00/11] Generic ACPI node references, graph improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday, July 17, 2018 4:19:10 PM CEST Sakari Ailus wrote:
> Hi all,
> 
> I'm somewhat unhappy with the current state of affairs in ACPI and how the
> graphs as well as references have been implemented. In particular,
> whenever dealing with references to non-device nodes, the implementation
> for ACPI is quite different than on DT, requiring extra properties and
> knowledge of reference types in more generic frameworks that handle these
> references.
> 
> The issue stems from the fact that currently ACPI does not allow
> referencing data extension nodes in the node hierarchy in a generic way.
> Both ACPI data extension nodes and device nodes are represented by the
> same fwnode_handle objects at runtime.
> 
> Parsing a reference requires knowing what kind of reference it is, for
> instance whether it's a port, an endpoint or a LED. We currently use
> integer properties in the data nodes to tell this ("port" or "endpoint").
> This is problematic as each new type of a reference will add new
> properties to the same DT binding namespace that are not documented in DT
> binding documentation, increasing the likelihood of a clash. This headache
> will continue to increase with each new type of a reference.
> 
> What I propose to address these issues is the following:
> 
> - Instead of defining ways to refer to data nodes by following integer
>   properties, use the names of the data nodes (first package entry of the
>   data extension) themselves to do that. This is easier to understand and
>   entirely agnostic to the type of the reference (see patch 2).
> 
> - Add "@" character (as in DT) to separate the node name and its number.
>   The name defines the purpose of the node, such as "port" for graph ports
>   and "endpoint" for graph endpoints. This makes parsing easier as the "@"
>   character separates the name from the number as well as brings ACPI to
>   feature parity with DT in this respect --- the name could theoretically
>   include numerals as well.
> 
> - Use "reg" property to tell the number, instead of a purpose-defined
>   property.
> 
> These changes will also bring ACPI to feature parity with DT in two
> respects:
> 
> - DT bindings will be sufficient in the vast majority of cases for making
>   references.
> 
> - References are generic and there is no need to know the type of the
>   reference when parsing it.
> 
> The benefits of these changes will include
> 
> - Avoid incrementally increasing headache in managing properties in the
>   DT property binding namespace that are (and likely won't) be part of the
>   DT bindings.
> 
> - Driver (e.g. LED) changes to support ACPI will be more or less limited
>   to switching from OF to fwnode property API.
> 
> - Firmware type can be hidded most of the time, and we could get rid of
>   (or at not least add more functions like)
>   v4l2_fwnode_reference_get_int_prop in
>   drivers/media/v4l2-core/v4l2-fwnode.c.
> 
> The following changes have been made since v1. I hope they address the
> review comments.
> 
> - Add copyright and improve the hierarchical data node reference
>   documentation in Documentation/acpi/dsd/data-node-references.txt . The
>   use of the "reg" property is now documented and an example has been
>   added.
> 
> - The node numbering documentation has been split off to a separate patch
>   ("ACPI / DSD: Document key numbering for hierarchical data extension
>   refs") as the node references and the numbering of the nodes are
>   separate matters.
> 
> - References to _DSD property as well as _DSD hierarchical data extension
>   specs have been added.
> 
> - Use terms "key" and "target" are used in conjunction with hierarhical
>   data extension rather than first and second package list entries. While
>   both are technically correct, the new terms are more meaningful and
>   aligned with the hierarchical data extension spec itself.
> 
> - Improve documentation for acpi_graph_get_next_endpoint() so that it
>   discussed the preferred referencing style first. Also include the "@"
>   character to the keys which was missing in v1.
> 
> - Document that in absence of multiple port nodes in a graph under a
>   device object, the number of the sole port node shall be zero.
> 
> - Document that for generic references, the node numbering in the
>   hierarchical data extension keys is in hexadecimal notation.
> 
> - Improve subjects of the documentation patches so they can be easily told
>   apart from non-documentation patches.
> 
> As a summary, all the changes are changes to the documentation only.
> 
> Sakari Ailus (11):
>   ACPI: Convert ACPI reference args to generic fwnode reference args
>   ACPI: property: Allow making references to non-device nodes
>   ACPI / DSD: Document hierarchical data extension references
>   ACPI: property: Make the ACPI graph API private
>   ACPI: property: Allow direct graph endpoint references
>   ACPI: property: Use data node name and reg property for graphs
>   ACPI / DSD: Document key numbering for hierarchical data extension
>     refs
>   ACPI / DSD: Update documentation for hierarchical data extension 1.1
>   ACPI / DSD: graph: Fix graph documentation
>   ACPI / DSD: graph: Improve graph documentation for port/ep numbering
>   ACPI / DSD: graph: Update graph documentation to use generic
>     references
> 
>  Documentation/acpi/dsd/data-node-references.txt   |  89 +++++++++
>  Documentation/acpi/dsd/graph.txt                  |  72 ++++----
>  drivers/acpi/property.c                           | 209 ++++++++++------------
>  drivers/gpio/gpiolib-acpi.c                       |  11 +-
>  drivers/infiniband/hw/hns/hns_roce_hw_v1.c        |  10 +-
>  drivers/media/v4l2-core/v4l2-fwnode.c             |   2 +-
>  drivers/net/ethernet/apm/xgene/xgene_enet_hw.c    |   6 +-
>  drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c |   6 +-
>  drivers/net/ethernet/hisilicon/hns/hns_enet.c     |   8 +-
>  include/linux/acpi.h                              |  25 +--
>  include/linux/fwnode.h                            |   2 +-
>  11 files changed, 259 insertions(+), 181 deletions(-)
>  create mode 100644 Documentation/acpi/dsd/data-node-references.txt
> 
> 

All applied, thanks!


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux