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

Re: [Xen-devel] [RFC for-4.8 v2 4/7] xen/device-tree: Make dt_match_node match props



On Mon, Jun 06, 2016 at 06:39:39PM +0100, Julien Grall wrote:
> Hi Edgar,
> 
> On 03/06/16 14:29, Edgar E. Iglesias wrote:
> >From: "Edgar E. Iglesias" <edgar.iglesias@xxxxxxxxxx>
> >
> >Make dt_match_node match for existing properties.
> >We only search for the existance of the properties, not
> 
> s/existance/existence/

Fixed

> 
> >for specific values.
> 
> [..]
> 
> >diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
> >index b348913..f13d186 100644
> >--- a/xen/include/xen/device_tree.h
> >+++ b/xen/include/xen/device_tree.h
> >@@ -30,6 +30,7 @@ struct dt_device_match {
> >      const char *type;
> >      const char *compatible;
> >      const bool_t not_available;
> >+    const char **props;
> 
> I would add a comment above the field to explain the behavior.

Sounds good. I've added the following:
    /*
     * NULL terminated array of property names to search for.
     * We only search for the properties existence.
     */
    const char **props;


> 
> >      const void *data;
> >  };
> >
> >@@ -37,11 +38,13 @@ struct dt_device_match {
> >  #define __DT_MATCH_TYPE(typ)            .type = typ
> >  #define __DT_MATCH_COMPATIBLE(compat)   .compatible = compat
> >  #define __DT_MATCH_NOT_AVAILABLE()      .not_available = 1
> >+#define __DT_MATCH_PROPS(p...)          .props = (const char *[]) { p, NULL 
> >}
> 
> Why the cast?

AFAIK, it's needed to instantiate the dynamically sized array of pointers.
Another option is to make __DT_MATCH_PROPS take the char ** pointer.
The descriptor declaration would instead of looking like this:
    {
        __DT_MATCH_COMPATIBLE("mmio-sram"),
        __DT_MATCH_PROPS("no-memory-wc"),
        .data = &mattr_device_rw,
    },

Look something like this:

const char *props_no_mem_wc[] = { "no-memory-wc", NULL };

....

    {
        __DT_MATCH_COMPATIBLE("mmio-sram"),
        __DT_MATCH_PROPS(props_no_mem_wc),
        .data = &mattr_device_rw,
    },


Or do you have better suggestions?

Best regards,
Edgar


> 
> >
> >  #define DT_MATCH_PATH(p)                { __DT_MATCH_PATH(p) }
> >  #define DT_MATCH_TYPE(typ)              { __DT_MATCH_TYPE(typ) }
> >  #define DT_MATCH_COMPATIBLE(compat)     { __DT_MATCH_COMPATIBLE(compat) }
> >  #define DT_MATCH_NOT_AVAILABLE()        { __DT_MATCH_NOT_AVAILABLE() }
> >+#define DT_MATCH_PROPS(p...)            { __DT_MATCH_PROPS(p) }
> >
> >  typedef u32 dt_phandle;
> 
> Regards,
> 
> -- 
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.