Re: [PATCH v4 13/16] device property: Add support for fwnode endpoints

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

 




On Monday, March 06, 2017 04:19:27 PM Sakari Ailus wrote:
> Similar to OF endpoints, endpoint type nodes can be also supported on
> ACPI. In order to make it possible for drivers to ignore the matter,
> add a type for fwnode_endpoint and a function to parse them.
> 
> On ACPI, find the child node index instead of relying on the "endpoint"
> property.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> ---
>  drivers/base/property.c  | 36 ++++++++++++++++++++++++++++++++++++
>  include/linux/fwnode.h   |  6 ++++++
>  include/linux/property.h |  3 +++
>  3 files changed, 45 insertions(+)
> 
> diff --git a/drivers/base/property.c b/drivers/base/property.c
> index 860e160..b8c1017 100644
> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c
> @@ -1330,3 +1330,39 @@ fwnode_graph_get_remote_endpoint(struct fwnode_handle *fwnode)
>  	return endpoint;
>  }
>  EXPORT_SYMBOL_GPL(fwnode_graph_get_remote_endpoint);
> +
> +/*

That should be /** I gather?

> + * fwnode_graph_parse_endpoint() - parse common endpoint node properties

The parens at the end of the function name above are not necessary.

> + * @node: pointer to endpoint device_node
> + * @endpoint: pointer to the fwnode endpoint data structure
> + *
> + * The caller should hold a reference to @node.

A few words about what the function does, please.

> + */
> +int fwnode_graph_parse_endpoint(struct fwnode_handle *fwnode,
> +				struct fwnode_endpoint *endpoint)
> +{
> +	struct fwnode_handle *port_fwnode = fwnode_get_parent(fwnode);
> +
> +	memset(endpoint, 0, sizeof(*endpoint));
> +
> +	endpoint->local_fwnode = fwnode;
> +
> +	if (is_acpi_node(port_fwnode)) {
> +		struct fwnode_handle *iter;
> +
> +		fwnode_property_read_u32(port_fwnode, "port", &endpoint->port);
> +
> +		for (iter = fwnode_get_next_child_node(port_fwnode, NULL);
> +		     iter != fwnode;
> +		     iter = fwnode_get_next_child_node(port_fwnode, iter))
> +			endpoint->id++;
> +	} else {
> +		fwnode_property_read_u32(port_fwnode, "reg", &endpoint->port);
> +		fwnode_property_read_u32(fwnode, "reg", &endpoint->id);
> +	}
> +
> +	fwnode_handle_put(port_fwnode);
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(fwnode_graph_parse_endpoint);
> diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
> index 8bd28ce..cb60f29 100644
> --- a/include/linux/fwnode.h
> +++ b/include/linux/fwnode.h
> @@ -27,4 +27,10 @@ struct fwnode_handle {
>  	struct fwnode_handle *secondary;
>  };
>  
> +struct fwnode_endpoint {
> +	unsigned int port;
> +	unsigned int id;
> +	const struct fwnode_handle *local_fwnode;
> +};

Any kerneldoc?

> +
>  #endif
> diff --git a/include/linux/property.h b/include/linux/property.h
> index 0b61ea4..45ef00a 100644
> --- a/include/linux/property.h
> +++ b/include/linux/property.h
> @@ -284,4 +284,7 @@ struct fwnode_handle *fwnode_graph_get_remote_port(
>  struct fwnode_handle *fwnode_graph_get_remote_endpoint(
>  	struct fwnode_handle *fwnode);
>  
> +int fwnode_graph_parse_endpoint(struct fwnode_handle *fwnode,
> +				struct fwnode_endpoint *endpoint);
> +
>  #endif /* _LINUX_PROPERTY_H_ */
> 

Thanks,
Rafael

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



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux