Johan: as you are one of the people who requested the renaming, any
suggestions ?

Romain

2014-10-29 8:35 GMT+01:00 Romain Perier <[email protected]>:
> As discussed on the mailing list, it makes more sense to rename this property
> to "system-power-controller". Problem being that the word "source" usually 
> tends
> to be used for inputs and that is out of control of the OS. The poweroff
> capability is an output which simply turns the system-power off. Also, this
> property might be used by drivers which power-off the system and power back on
> subsequent RTC alarms. This seems to suggest to remove "poweroff" from the
> property name and to choose "system-power-controller" as the more generic 
> name.
> This patchs adds the required renaming changes and defines an helper function
> which is compatible with both properties, the old one prefixed by a vendor 
> name
> and the new one without any prefix.
>
> Signed-off-by: Romain Perier <[email protected]>
> ---
>  .../devicetree/bindings/power/power-controller.txt | 18 ++++++++++++
>  .../devicetree/bindings/power/poweroff.txt         | 18 ------------
>  drivers/of/base.c                                  | 34 
> ++++++++++++++++++++++
>  include/linux/of.h                                 | 10 ++-----
>  4 files changed, 55 insertions(+), 25 deletions(-)
>  create mode 100644 
> Documentation/devicetree/bindings/power/power-controller.txt
>  delete mode 100644 Documentation/devicetree/bindings/power/poweroff.txt
>
> diff --git a/Documentation/devicetree/bindings/power/power-controller.txt 
> b/Documentation/devicetree/bindings/power/power-controller.txt
> new file mode 100644
> index 0000000..942f955
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/power-controller.txt
> @@ -0,0 +1,18 @@
> +* Generic system power control capability
> +
> +Power-management integrated circuits or miscellaneous harware components are
> +sometimes able to control the system power. The device driver associated to 
> these
> +components might needs to define this capability, which tells to the kernel 
> how
> +to switch off the system. The corresponding driver must have the standard
> +property "system-power-controller" in its device node. This property marks 
> the
> +device as able to controller the system-power. In order to test if this 
> property
> +is found programmatically, use the helper function 
> "of_is_system_power_controller"
> +from of.h .
> +
> +Example:
> +
> +act8846: act8846@5 {
> +        compatible = "active-semi,act8846";
> +        status = "okay";
> +        system-power-controller;
> +}
> diff --git a/Documentation/devicetree/bindings/power/poweroff.txt 
> b/Documentation/devicetree/bindings/power/poweroff.txt
> deleted file mode 100644
> index 845868b..0000000
> --- a/Documentation/devicetree/bindings/power/poweroff.txt
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -* Generic Poweroff capability
> -
> -Power-management integrated circuits or miscellaneous harware components are
> -sometimes able to control the system power. The device driver associated to 
> these
> -components might needs to define poweroff capability, which tells to the 
> kernel
> -how to switch off the system. The corresponding driver must have the standard
> -property "poweroff-source" in its device node. This property marks the 
> device as
> -able to shutdown the system. In order to test if this property is found
> -programmatically, use the helper function "of_system_has_poweroff_source" 
> from
> -of.h .
> -
> -Example:
> -
> -act8846: act8846@5 {
> -        compatible = "active-semi,act8846";
> -        status = "okay";
> -        poweroff-source;
> -}
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 74ab1b8..438e405 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2260,3 +2260,37 @@ struct device_node *of_graph_get_remote_port(const 
> struct device_node *node)
>         return of_get_next_parent(np);
>  }
>  EXPORT_SYMBOL(of_graph_get_remote_port);
> +
> +/**
> + * of_is_system_power_controller() - Tells if the property for controlling 
> system
> + * power is found in device_node.
> + * @np: Pointer to the given device_node
> + *
> + * Return: true if present false otherwise
> + */
> +bool of_is_system_power_controller(const struct device_node *np)
> +{
> +       struct property *pp;
> +       unsigned long flags;
> +       char *sep;
> +       bool found = false;
> +
> +       raw_spin_lock_irqsave(&devtree_lock, flags);
> +       for_each_property_of_node(np, pp) {
> +               if (of_prop_cmp(pp->name, "system-power-controller") == 0) {
> +                       found = true;
> +                       break;
> +               }
> +               /* Backward compatibility with previous property 
> "vendor,system-power-controller",
> +                * we just check that an non-empty vendor-prefix exists here
> +                */
> +               sep = strchr(pp->name, ',');
> +               if (sep && sep - pp->name && of_prop_cmp(sep + 1, 
> "system-power-controller") == 0) {
> +                       found = true;
> +                       break;
> +               }
> +       }
> +       raw_spin_unlock_irqrestore(&devtree_lock, flags);
> +       return found;
> +}
> +EXPORT_SYMBOL(of_is_system_power_controller);
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 868fdad..e7177b3 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -910,15 +910,11 @@ static inline int of_changeset_update_property(struct 
> of_changeset *ocs,
>  /* CONFIG_OF_RESOLVE api */
>  extern int of_resolve_phandles(struct device_node *tree);
>
> -/**
> - * of_system_has_poweroff_source - Tells if poweroff-source is found for 
> device_node
> - * @np: Pointer to the given device_node
> - *
> - * return true if present false otherwise
> - */
> +bool of_is_system_power_controller(const struct device_node *np);
> +
>  static inline bool of_system_has_poweroff_source(const struct device_node 
> *np)
>  {
> -       return of_property_read_bool(np, "poweroff-source");
> +       return of_is_system_power_controller(np);
>  }
>
>  #endif /* _LINUX_OF_H */
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to