| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- From b4faa163a7ebae9faab5d0aefe70143e3379178b Mon Sep 17 00:00:00 2001
 
- From: Vince Hsu <[email protected]>
 
- Date: Mon, 13 Jul 2015 13:39:39 +0100
 
- Subject: [PATCH] reset: add of_reset_control_get_by_index()
 
- Add of_reset_control_get_by_index() to allow the drivers to get reset
 
- device without knowing its name.
 
- Signed-off-by: Vince Hsu <[email protected]>
 
- [[email protected]: Updated stub function to return -ENOTSUPP instead
 
-  of -ENOSYS which should only be used for system calls.]
 
- Signed-off-by: Jon Hunter <[email protected]>
 
- Signed-off-by: Philipp Zabel <[email protected]>
 
- ---
 
-  drivers/reset/core.c  | 40 +++++++++++++++++++++++++++++-----------
 
-  include/linux/reset.h |  9 +++++++++
 
-  2 files changed, 38 insertions(+), 11 deletions(-)
 
- --- a/drivers/reset/core.c
 
- +++ b/drivers/reset/core.c
 
- @@ -141,27 +141,24 @@ int reset_control_status(struct reset_co
 
-  EXPORT_SYMBOL_GPL(reset_control_status);
 
-  
 
-  /**
 
- - * of_reset_control_get - Lookup and obtain a reference to a reset controller.
 
- + * of_reset_control_get_by_index - Lookup and obtain a reference to a reset
 
- + * controller by index.
 
-   * @node: device to be reset by the controller
 
- - * @id: reset line name
 
- - *
 
- - * Returns a struct reset_control or IS_ERR() condition containing errno.
 
- + * @index: index of the reset controller
 
-   *
 
- - * Use of id names is optional.
 
- + * This is to be used to perform a list of resets for a device or power domain
 
- + * in whatever order. Returns a struct reset_control or IS_ERR() condition
 
- + * containing errno.
 
-   */
 
- -struct reset_control *of_reset_control_get(struct device_node *node,
 
- -					   const char *id)
 
- +struct reset_control *of_reset_control_get_by_index(struct device_node *node,
 
- +					   int index)
 
-  {
 
-  	struct reset_control *rstc = ERR_PTR(-EPROBE_DEFER);
 
-  	struct reset_controller_dev *r, *rcdev;
 
-  	struct of_phandle_args args;
 
- -	int index = 0;
 
-  	int rstc_id;
 
-  	int ret;
 
-  
 
- -	if (id)
 
- -		index = of_property_match_string(node,
 
- -						 "reset-names", id);
 
-  	ret = of_parse_phandle_with_args(node, "resets", "#reset-cells",
 
-  					 index, &args);
 
-  	if (ret)
 
- @@ -202,6 +199,27 @@ struct reset_control *of_reset_control_g
 
-  
 
-  	return rstc;
 
-  }
 
- +EXPORT_SYMBOL_GPL(of_reset_control_get_by_index);
 
- +
 
- +/**
 
- + * of_reset_control_get - Lookup and obtain a reference to a reset controller.
 
- + * @node: device to be reset by the controller
 
- + * @id: reset line name
 
- + *
 
- + * Returns a struct reset_control or IS_ERR() condition containing errno.
 
- + *
 
- + * Use of id names is optional.
 
- + */
 
- +struct reset_control *of_reset_control_get(struct device_node *node,
 
- +					   const char *id)
 
- +{
 
- +	int index = 0;
 
- +
 
- +	if (id)
 
- +		index = of_property_match_string(node,
 
- +						 "reset-names", id);
 
- +	return of_reset_control_get_by_index(node, index);
 
- +}
 
-  EXPORT_SYMBOL_GPL(of_reset_control_get);
 
-  
 
-  /**
 
- --- a/include/linux/reset.h
 
- +++ b/include/linux/reset.h
 
- @@ -38,6 +38,9 @@ static inline struct reset_control *devm
 
-  struct reset_control *of_reset_control_get(struct device_node *node,
 
-  					   const char *id);
 
-  
 
- +struct reset_control *of_reset_control_get_by_index(
 
- +					struct device_node *node, int index);
 
- +
 
-  #else
 
-  
 
-  static inline int reset_control_reset(struct reset_control *rstc)
 
- @@ -106,6 +109,12 @@ static inline struct reset_control *of_r
 
-  	return ERR_PTR(-ENOSYS);
 
-  }
 
-  
 
- +static inline struct reset_control *of_reset_control_get_by_index(
 
- +				struct device_node *node, int index)
 
- +{
 
- +	return ERR_PTR(-ENOTSUPP);
 
- +}
 
- +
 
-  #endif /* CONFIG_RESET_CONTROLLER */
 
-  
 
-  #endif
 
 
  |