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

Re: [Xen-devel] [RFC 09/24] xen/dts: Add new helpers to use the device tree



On Thu, 2013-08-22 at 14:48 +0100, Julien Grall wrote:
> On 08/22/2013 02:21 PM, Ian Campbell wrote:
> > <insert which new helpers here>
> 
> I will update the commit message on the next patch series.
> 
> > I think this is also reimplementing the internals of some existing
> > dt_match_foo? And changing set_val into dt_set_cell. IOW there seems to
> > be more changes than the single line changelog would suggest.
> 
> Except set_val which was rename and exported to __dt_set_cell, nothing
> has changed. All the functions are new.

OK.

> > 
> > Are any of these just sync'd from Linux?
> 
> Most of them.

THIs is worth mentioning in the commit message, along with a rough Linux
version number, in case we come back and need to sync bug fixes or
something
> 
> > On Fri, 2013-08-16 at 22:05 +0100, Julien Grall wrote:
> >> @@ -295,11 +341,29 @@ struct dt_device_node 
> >> *dt_find_compatible_node(struct dt_device_node *from,
> >>  /**
> >>   * Find a property with a given name for a given node
> >>   * and return the value.
> >> - */
> >> +  */
> > 
> > Oops.
> > 
> >>  const void *dt_get_property(const struct dt_device_node *np,
> >>                              const char *name, u32 *lenp);
> >>  
> >>  /**
> >> + * dt_property_read_string - Find and read a string from a property
> >> + * @np:         Device node from which the property value is to be read
> >> + * @propname:   Name of the property to be searched
> >> + * @out_string: Pointer to null terminated return string, modified only
> >> + *              if return value if 0.
> >> + *
> >> + * Search for a property in a device tree node and retrieve a null
> >> + * terminated string value (pointer to data, not a copy). Returns 0 on
> >> + * sucess, -EINVAL if the property does not exist, -ENODATA if property
> > 
> > success
> > 
> >> + * doest not have value, and -EILSEQ if the string is not
> >> + * null-terminated with the length of the property data.
> >> + *
> >> + * The out_string pointer is modifed only if a valid string can be 
> >> decoded.
> > 
> > modified
> > 
> >> + */
> >> +int dt_property_read_string(const struct dt_device_node *np,
> >> +                            const char *propname, const char 
> >> **out_string);
> >> +
> >> +/**
> >>   * Checks if the given "compat" string matches one of the strings in
> >>   * the device's "compatible" property
> >>   */
> >> @@ -433,4 +497,71 @@ int dt_n_size_cells(const struct dt_device_node *np);
> >>   */
> >>  int dt_n_addr_cells(const struct dt_device_node *np);
> >>  
> >> -#endif
> >> +/**
> >> + * dt_device_is_available - Check if a device is available for use
> >> + *
> >> + * @device: Node to check for availability
> >> + *
> >> + * Returns true if the status property is absent or set to "okay" or "ok",
> >> + * false otherwise.
> >> + */
> >> +bool_t dt_device_is_available(const struct dt_device_node *device);
> >> +
> >> +/**
> >> + * dt_match_node - Tell if a device_node has a matching of dt_device_match
> >> + * @matches: array of dt_device_match structures to search in
> >> + * @node: the dt_device_node structure to match against
> >> + *
> >> + * Returns true if the device node match one of dt_device_match.
> >> + */
> >> +bool_t dt_match_node(const struct dt_device_match *matches,
> >> +                     const struct dt_device_node *node);
> >> +
> >> +/**
> >> + * dt_find_matching_node - Find a node based on an dt_device_match match 
> >> table
> >> + * @from: The node to start searching from or NULL, the node you pass
> >> + *        will not be searched, only the next one will; typically, you 
> >> pass
> >> + *        what the returned call returned
> >> + * @matches: array of dt_device_match structures to search in
> >> + *
> >> + * Returns a node pointer.
> >> + */
> >> +struct dt_device_node *
> >> +dt_find_matching_node(struct dt_device_node *from,
> >> +                      const struct dt_device_match *matches);
> >> +
> >> +/**
> >> + * dt_set_cell - Write a value into a serie of cells
> > 
> > series
> > 
> >> + *
> >> + * @cellp: Pointer to cells
> >> + *
> >> + * Write a value into a series of cells and update cellp to point to the
> >> + * cell just after.
> >> + */
> >> +void dt_set_cell(__be32 **cellp, int size, u64 val);
> >> +
> >> +/**
> >> + * dt_set_range - Write range into a serie of cells
> >> + *
> >> + * @cellp: Pointer to cells
> >> + * @np: Node which contains the encoding for the address and
> >> + * the size
> >> + * @address: Start of range
> >> + * @size: Size of the range
> >> + *
> >> + * Write a range into a serie of cells and update cellp to point to the
> > 
> > series
> > 
> >> + * cell just after.
> >> + */
> >> +void dt_set_range(__be32 **cellp, const struct dt_device_node *np,
> >> +                  u64 address, u64 size);
> >> +
> >> +#endif /* __XEN_DEVICE_TREE_H */
> >> +
> >> +/*
> >> + * Local variables:
> >> + * mode: C
> >> + * c-file-style: "BSD"
> >> + * c-basic-offset: 4
> >> + * indent-tabs-mode: nil
> >> + * End:
> >> + */
> > 
> > 
> 
> 



_______________________________________________
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®.