Em Mon, 29 Sep 2014 20:03:34 +0200
Philipp Zabel <p.za...@pengutronix.de> escreveu:

> Decrementing the reference count of the previous endpoint node allows to
> use the of_graph_get_next_endpoint function in a for_each_... style macro.
> All current users of this function that pass a non-NULL prev parameter
> (that is, soc_camera and imx-drm) are changed to not decrement the passed
> prev argument's refcount themselves.
> 
> Signed-off-by: Philipp Zabel <p.za...@pengutronix.de>

Feel free to merge it via Grant's tree.

Acked-by: Mauro Carvalho Chehab <mche...@osg.samsung.com>

> ---
> Changes since v4:
>  - Folded patches 1-3 into this one
> ---
>  drivers/media/platform/soc_camera/soc_camera.c |  3 ++-
>  drivers/of/base.c                              |  9 +--------
>  drivers/staging/imx-drm/imx-drm-core.c         | 12 ++----------
>  3 files changed, 5 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/media/platform/soc_camera/soc_camera.c 
> b/drivers/media/platform/soc_camera/soc_camera.c
> index f4308fe..619b2d4 100644
> --- a/drivers/media/platform/soc_camera/soc_camera.c
> +++ b/drivers/media/platform/soc_camera/soc_camera.c
> @@ -1696,7 +1696,6 @@ static void scan_of_host(struct soc_camera_host *ici)
>               if (!i)
>                       soc_of_bind(ici, epn, ren->parent);
>  
> -             of_node_put(epn);
>               of_node_put(ren);
>  
>               if (i) {
> @@ -1704,6 +1703,8 @@ static void scan_of_host(struct soc_camera_host *ici)
>                       break;
>               }
>       }
> +
> +     of_node_put(epn);
>  }
>  
>  #else
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 293ed4b..f7a9aa8 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2070,8 +2070,7 @@ EXPORT_SYMBOL(of_graph_parse_endpoint);
>   * @prev: previous endpoint node, or NULL to get first
>   *
>   * Return: An 'endpoint' node pointer with refcount incremented. Refcount
> - * of the passed @prev node is not decremented, the caller have to use
> - * of_node_put() on it when done.
> + * of the passed @prev node is decremented.
>   */
>  struct device_node *of_graph_get_next_endpoint(const struct device_node 
> *parent,
>                                       struct device_node *prev)
> @@ -2107,12 +2106,6 @@ struct device_node *of_graph_get_next_endpoint(const 
> struct device_node *parent,
>               if (WARN_ONCE(!port, "%s(): endpoint %s has no parent node\n",
>                             __func__, prev->full_name))
>                       return NULL;
> -
> -             /*
> -              * Avoid dropping prev node refcount to 0 when getting the next
> -              * child below.
> -              */
> -             of_node_get(prev);
>       }
>  
>       while (1) {
> diff --git a/drivers/staging/imx-drm/imx-drm-core.c 
> b/drivers/staging/imx-drm/imx-drm-core.c
> index 6b22106..12303b3 100644
> --- a/drivers/staging/imx-drm/imx-drm-core.c
> +++ b/drivers/staging/imx-drm/imx-drm-core.c
> @@ -434,14 +434,6 @@ static uint32_t imx_drm_find_crtc_mask(struct 
> imx_drm_device *imxdrm,
>       return 0;
>  }
>  
> -static struct device_node *imx_drm_of_get_next_endpoint(
> -             const struct device_node *parent, struct device_node *prev)
> -{
> -     struct device_node *node = of_graph_get_next_endpoint(parent, prev);
> -     of_node_put(prev);
> -     return node;
> -}
> -
>  int imx_drm_encoder_parse_of(struct drm_device *drm,
>       struct drm_encoder *encoder, struct device_node *np)
>  {
> @@ -453,7 +445,7 @@ int imx_drm_encoder_parse_of(struct drm_device *drm,
>       for (i = 0; ; i++) {
>               u32 mask;
>  
> -             ep = imx_drm_of_get_next_endpoint(np, ep);
> +             ep = of_graph_get_next_endpoint(np, ep);
>               if (!ep)
>                       break;
>  
> @@ -502,7 +494,7 @@ int imx_drm_encoder_get_mux_id(struct device_node *node,
>               return -EINVAL;
>  
>       do {
> -             ep = imx_drm_of_get_next_endpoint(node, ep);
> +             ep = of_graph_get_next_endpoint(node, ep);
>               if (!ep)
>                       break;
>  
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to