lkml.org 
[lkml]   [2014]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v6 02/12] Driver core: Unified device properties interface for platform firmware
    Date
    On Tue, 21 Oct 2014 23:15:50 +0200
    , "Rafael J. Wysocki" <rjw@rjwysocki.net>
    wrote:
    > From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    >
    > Add a uniform interface by which device drivers can request device
    > properties from the platform firmware by providing a property name
    > and the corresponding data type. The purpose of it is to help to
    > write portable code that won't depend on any particular platform
    > firmware interface.
    >
    > The following general helper functions are added:
    >
    > device_property_present()
    > device_property_read_u8()
    > device_property_read_u16()
    > device_property_read_u32()
    > device_property_read_u64()
    > device_property_read_string()
    > device_property_read_u8_array()
    > device_property_read_u16_array()
    > device_property_read_u32_array()
    > device_property_read_u64_array()
    > device_property_read_string_array()
    >
    > The first one allows the caller to check if the given property is
    > present. The next 5 of them allow single-valued properties of
    > various types to be retrieved in a uniform way. The remaining 5 are
    > for reading properties with multiple values (arrays of either numbers
    > or strings).
    >
    > The interface covers both ACPI and Device Trees.
    >
    > This change set includes material from Mika Westerberg and Aaron Lu.
    >
    > Signed-off-by: Aaron Lu <aaron.lu@intel.com>
    > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    > ---
    >
    > Changes from v5:
    > - acpi_dev_prop_read() can now handle both list (package) and single-value
    > properties (the latter are tried first for the last argument equal to 1).
    > - There is a new macro to generate the bodies of device_property_read_u*_array().
    > - device_property_read_u*() are implemented using device_property_read_u*_array().
    > - device_property_read_bool() is a new static inline wrapper around
    > device_property_present().
    >
    > ---
    > drivers/acpi/property.c | 178 +++++++++++++++++++++++++++++++++++
    > drivers/base/Makefile | 2
    > drivers/base/property.c | 233 +++++++++++++++++++++++++++++++++++++++++++++++
    > drivers/of/base.c | 106 ++++++++++++++++++---
    > include/linux/acpi.h | 32 ++++++
    > include/linux/of.h | 22 ++++
    > include/linux/property.h | 53 ++++++++++
    > 7 files changed, 609 insertions(+), 17 deletions(-)
    > create mode 100644 drivers/base/property.c
    > create mode 100644 include/linux/property.h
    >
    > Index: linux-pm/include/linux/property.h
    > ===================================================================
    > --- /dev/null
    > +++ linux-pm/include/linux/property.h
    > @@ -0,0 +1,53 @@
    > +/*
    > + * property.h - Unified device property interface.
    > + *
    > + * Copyright (C) 2014, Intel Corporation
    > + * Authors: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    > + * Mika Westerberg <mika.westerberg@linux.intel.com>
    > + *
    > + * This program is free software; you can redistribute it and/or modify
    > + * it under the terms of the GNU General Public License version 2 as
    > + * published by the Free Software Foundation.
    > + */
    > +
    > +#ifndef _LINUX_PROPERTY_H_
    > +#define _LINUX_PROPERTY_H_
    > +
    > +#include <linux/types.h>
    > +
    > +struct device;
    > +
    > +enum dev_prop_type {
    > + DEV_PROP_U8,
    > + DEV_PROP_U16,
    > + DEV_PROP_U32,
    > + DEV_PROP_U64,
    > + DEV_PROP_STRING,
    > + DEV_PROP_MAX,
    > +};
    > +
    > +bool device_property_present(struct device *dev, const char *propname);
    > +int device_property_read_u8_array(struct device *dev, const char *propname,
    > + u8 *val, size_t nval);
    > +int device_property_read_u16_array(struct device *dev, const char *propname,
    > + u16 *val, size_t nval);
    > +int device_property_read_u32_array(struct device *dev, const char *propname,
    > + u32 *val, size_t nval);
    > +int device_property_read_u64_array(struct device *dev, const char *propname,
    > + u64 *val, size_t nval);
    > +int device_property_read_string_array(struct device *dev, const char *propname,
    > + char **val, size_t nval);

    I'm not sure if I asked this elsewhere. Can 'val' be made a const char **?

    g.


    \
     
     \ /
      Last update: 2014-11-04 17:01    [W:5.147 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site