All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
To: Kamil Debski <k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	gautam.vivek-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	mat.krawczuk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	yulgon.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	av.tikhomirov-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	jg1.han-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
	matt.porter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	tjakobi-o02PS0xoJP9W0yFyLvAVXMxlOr/tl8fh@public.gmane.org,
	stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org
Subject: Re: [PATCH v4 1/9] phy: core: Add an exported of_phy_get function
Date: Mon, 6 Jan 2014 12:42:50 +0530	[thread overview]
Message-ID: <52CA5772.1010300@ti.com> (raw)
In-Reply-To: <1387545857-9472-2-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>

Hi,

On Friday 20 December 2013 06:54 PM, Kamil Debski wrote:
> Previously the of_phy_get function took a struct device * and
> was declared static. It was impossible to call it from
> another driver and thus it was impossible to get phy defined
> for a given node. The old function was renamed to _of_phy_get
> and was left for internal use. of_phy_get function was added
> and it was exported. The function enables to get a phy for
> a given device tree node.
>
> Signed-off-by: Kamil Debski <k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> ---
>   drivers/phy/phy-core.c  |   45 ++++++++++++++++++++++++++++++++++++---------
>   include/linux/phy/phy.h |    1 +
>   2 files changed, 37 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index 03cf8fb..d6f8c34 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -240,8 +240,8 @@ out:
>   EXPORT_SYMBOL_GPL(phy_power_off);
>
>   /**
> - * of_phy_get() - lookup and obtain a reference to a phy by phandle
> - * @dev: device that requests this phy
> + * _of_phy_get() - lookup and obtain a reference to a phy by phandle
> + * @np: device_node for which to get the phy
>    * @index: the index of the phy
>    *
>    * Returns the phy associated with the given phandle value,
> @@ -250,20 +250,17 @@ EXPORT_SYMBOL_GPL(phy_power_off);
>    * not yet loaded. This function uses of_xlate call back function provided
>    * while registering the phy_provider to find the phy instance.
>    */
> -static struct phy *of_phy_get(struct device *dev, int index)
> +static struct phy *_of_phy_get(struct device_node *np, int index)
>   {
>   	int ret;
>   	struct phy_provider *phy_provider;
>   	struct phy *phy = NULL;
>   	struct of_phandle_args args;
>
> -	ret = of_parse_phandle_with_args(dev->of_node, "phys", "#phy-cells",
> +	ret = of_parse_phandle_with_args(np, "phys", "#phy-cells",
>   		index, &args);
> -	if (ret) {
> -		dev_dbg(dev, "failed to get phy in %s node\n",
> -			dev->of_node->full_name);
> +	if (ret)
>   		return ERR_PTR(-ENODEV);
> -	}
>
>   	mutex_lock(&phy_provider_mutex);
>   	phy_provider = of_phy_provider_lookup(args.np);
> @@ -283,6 +280,36 @@ err0:
>   }
>
>   /**
> + * of_phy_get() - lookup and obtain a reference to a phy using a device_node.
> + * @np: device_node for which to get the phy
> + * @con_id: name of the phy from device's point of view
> + *
> + * Returns the phy driver, after getting a refcount to it; or
> + * -ENODEV if there is no such phy. The caller is responsible for
> + * calling phy_put() to release that count.
> + */
> +struct phy *of_phy_get(struct device_node *np, const char *con_id)
> +{
> +	struct phy *phy = NULL;
> +	int index = 0;
> +
> +	if (con_id)
> +		index = of_property_match_string(np, "phy-names", con_id);
> +
> +	phy = _of_phy_get(np, index);
> +	if (IS_ERR(phy))
> +		return phy;
> +
> +	if (!try_module_get(phy->ops->owner))
> +		return ERR_PTR(-EPROBE_DEFER);
> +
> +	get_device(&phy->dev);
> +
> +	return phy;
> +}
> +EXPORT_SYMBOL_GPL(of_phy_get);
> +
> +/**
>    * phy_put() - release the PHY
>    * @phy: the phy returned by phy_get()
>    *
> @@ -370,7 +397,7 @@ struct phy *phy_get(struct device *dev, const char *string)
>   	if (dev->of_node) {
>   		index = of_property_match_string(dev->of_node, "phy-names",
>   			string);
> -		phy = of_phy_get(dev, index);
> +		phy = _of_phy_get(dev->of_node, index);
>   		if (IS_ERR(phy)) {
>   			dev_err(dev, "unable to find phy\n");
>   			return phy;
> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index 6d72269..bcb6274 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h
> @@ -131,6 +131,7 @@ struct phy *phy_get(struct device *dev, const char *string);
>   struct phy *devm_phy_get(struct device *dev, const char *string);
>   void phy_put(struct phy *phy);
>   void devm_phy_put(struct device *dev, struct phy *phy);
> +struct phy *of_phy_get(struct device_node *np, const char *con_id);

Add a stub for of_phy_get if CONFIG_GENERIC_PHY is not set and this 
patch should be ready for merge.

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Kamil Debski <k.debski@samsung.com>
Cc: <linux-kernel@vger.kernel.org>,
	<linux-samsung-soc@vger.kernel.org>, <linux-usb@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <kyungmin.park@samsung.com>,
	<t.figa@samsung.com>, <s.nawrocki@samsung.com>,
	<m.szyprowski@samsung.com>, <gautam.vivek@samsung.com>,
	<mat.krawczuk@gmail.com>, <yulgon.kim@samsung.com>,
	<p.paneri@samsung.com>, <av.tikhomirov@samsung.com>,
	<jg1.han@samsung.com>, <galak@codeaurora.org>,
	<matt.porter@linaro.org>, <tjakobi@math.uni-bielefeld.de>,
	<stern@rowland.harvard.edu>
Subject: Re: [PATCH v4 1/9] phy: core: Add an exported of_phy_get function
Date: Mon, 6 Jan 2014 12:42:50 +0530	[thread overview]
Message-ID: <52CA5772.1010300@ti.com> (raw)
In-Reply-To: <1387545857-9472-2-git-send-email-k.debski@samsung.com>

Hi,

On Friday 20 December 2013 06:54 PM, Kamil Debski wrote:
> Previously the of_phy_get function took a struct device * and
> was declared static. It was impossible to call it from
> another driver and thus it was impossible to get phy defined
> for a given node. The old function was renamed to _of_phy_get
> and was left for internal use. of_phy_get function was added
> and it was exported. The function enables to get a phy for
> a given device tree node.
>
> Signed-off-by: Kamil Debski <k.debski@samsung.com>
> ---
>   drivers/phy/phy-core.c  |   45 ++++++++++++++++++++++++++++++++++++---------
>   include/linux/phy/phy.h |    1 +
>   2 files changed, 37 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index 03cf8fb..d6f8c34 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -240,8 +240,8 @@ out:
>   EXPORT_SYMBOL_GPL(phy_power_off);
>
>   /**
> - * of_phy_get() - lookup and obtain a reference to a phy by phandle
> - * @dev: device that requests this phy
> + * _of_phy_get() - lookup and obtain a reference to a phy by phandle
> + * @np: device_node for which to get the phy
>    * @index: the index of the phy
>    *
>    * Returns the phy associated with the given phandle value,
> @@ -250,20 +250,17 @@ EXPORT_SYMBOL_GPL(phy_power_off);
>    * not yet loaded. This function uses of_xlate call back function provided
>    * while registering the phy_provider to find the phy instance.
>    */
> -static struct phy *of_phy_get(struct device *dev, int index)
> +static struct phy *_of_phy_get(struct device_node *np, int index)
>   {
>   	int ret;
>   	struct phy_provider *phy_provider;
>   	struct phy *phy = NULL;
>   	struct of_phandle_args args;
>
> -	ret = of_parse_phandle_with_args(dev->of_node, "phys", "#phy-cells",
> +	ret = of_parse_phandle_with_args(np, "phys", "#phy-cells",
>   		index, &args);
> -	if (ret) {
> -		dev_dbg(dev, "failed to get phy in %s node\n",
> -			dev->of_node->full_name);
> +	if (ret)
>   		return ERR_PTR(-ENODEV);
> -	}
>
>   	mutex_lock(&phy_provider_mutex);
>   	phy_provider = of_phy_provider_lookup(args.np);
> @@ -283,6 +280,36 @@ err0:
>   }
>
>   /**
> + * of_phy_get() - lookup and obtain a reference to a phy using a device_node.
> + * @np: device_node for which to get the phy
> + * @con_id: name of the phy from device's point of view
> + *
> + * Returns the phy driver, after getting a refcount to it; or
> + * -ENODEV if there is no such phy. The caller is responsible for
> + * calling phy_put() to release that count.
> + */
> +struct phy *of_phy_get(struct device_node *np, const char *con_id)
> +{
> +	struct phy *phy = NULL;
> +	int index = 0;
> +
> +	if (con_id)
> +		index = of_property_match_string(np, "phy-names", con_id);
> +
> +	phy = _of_phy_get(np, index);
> +	if (IS_ERR(phy))
> +		return phy;
> +
> +	if (!try_module_get(phy->ops->owner))
> +		return ERR_PTR(-EPROBE_DEFER);
> +
> +	get_device(&phy->dev);
> +
> +	return phy;
> +}
> +EXPORT_SYMBOL_GPL(of_phy_get);
> +
> +/**
>    * phy_put() - release the PHY
>    * @phy: the phy returned by phy_get()
>    *
> @@ -370,7 +397,7 @@ struct phy *phy_get(struct device *dev, const char *string)
>   	if (dev->of_node) {
>   		index = of_property_match_string(dev->of_node, "phy-names",
>   			string);
> -		phy = of_phy_get(dev, index);
> +		phy = _of_phy_get(dev->of_node, index);
>   		if (IS_ERR(phy)) {
>   			dev_err(dev, "unable to find phy\n");
>   			return phy;
> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index 6d72269..bcb6274 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h
> @@ -131,6 +131,7 @@ struct phy *phy_get(struct device *dev, const char *string);
>   struct phy *devm_phy_get(struct device *dev, const char *string);
>   void phy_put(struct phy *phy);
>   void devm_phy_put(struct device *dev, struct phy *phy);
> +struct phy *of_phy_get(struct device_node *np, const char *con_id);

Add a stub for of_phy_get if CONFIG_GENERIC_PHY is not set and this 
patch should be ready for merge.

Thanks
Kishon

  parent reply	other threads:[~2014-01-06  7:12 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-20 13:24 [PATCH v5 0/9] phy: Add new Exynos USB 2.0 PHY driver Kamil Debski
2013-12-20 13:24 ` Kamil Debski
2013-12-20 13:24 ` [PATCH v4 1/9] phy: core: Add an exported of_phy_get function Kamil Debski
     [not found]   ` <1387545857-9472-2-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-06  7:12     ` Kishon Vijay Abraham I [this message]
2014-01-06  7:12       ` Kishon Vijay Abraham I
2013-12-20 13:24 ` [PATCH v4 2/9] phy: core: Add devm_of_phy_get to phy-core Kamil Debski
2014-01-06  7:14   ` Kishon Vijay Abraham I
2014-01-06  7:14     ` Kishon Vijay Abraham I
2013-12-20 13:24 ` [PATCH v5 3/9] phy: Add new Exynos USB 2.0 PHY driver Kamil Debski
2014-01-06 10:12   ` Kishon Vijay Abraham I
2014-01-06 10:12     ` Kishon Vijay Abraham I
     [not found]     ` <52CA818A.4090403-l0cyMroinI0@public.gmane.org>
2014-01-08 17:56       ` Kamil Debski
2014-01-08 17:56         ` Kamil Debski
2014-01-09  5:27         ` Kishon Vijay Abraham I
2014-01-09  5:27           ` Kishon Vijay Abraham I
2013-12-20 13:24 ` [PATCH v5 4/9] usb: ehci-s5p: Change to use phy provided by the generic phy framework Kamil Debski
2013-12-26 10:13   ` Vivek Gautam
2013-12-30 13:43     ` Kamil Debski
2013-12-20 13:24 ` [PATCH v5 5/9] usb: s3c-hsotg: Use the new Exynos USB phy driver with " Kamil Debski
2013-12-20 13:24 ` [PATCH v5 7/9] phy: Add Exynos 5250 support to the Exynos USB 2.0 PHY driver Kamil Debski
2013-12-20 13:24 ` [PATCH v2 8/9] dts: Add usb2phy to Exynos 4 Kamil Debski
     [not found] ` <1387545857-9472-1-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-12-20 13:24   ` [PATCH v5 6/9] phy: Add support for S5PV210 to the Exynos USB 2.0 PHY driver Kamil Debski
2013-12-20 13:24     ` Kamil Debski
2014-01-04 14:37     ` [PATCH v6 " Tomasz Figa
2013-12-20 13:24   ` [PATCH v2 9/9] dts: Add usb2phy to Exynos 5250 Kamil Debski
2013-12-20 13:24     ` Kamil Debski
     [not found]     ` <1387545857-9472-10-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-12-26 10:32       ` Vivek Gautam
2013-12-26 10:32         ` Vivek Gautam
2013-12-30 15:18         ` Kamil Debski
2013-12-20 13:24   ` [PATCH RFC alternative ver 1] phy: Exynos 421x USB 2.0 PHY support Kamil Debski
2013-12-20 13:24     ` Kamil Debski
     [not found]     ` <1387545857-9472-11-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-06 10:24       ` Kishon Vijay Abraham I
2014-01-06 10:24         ` Kishon Vijay Abraham I
2014-01-08 17:42         ` Kamil Debski
2014-01-02 16:20   ` [PATCH v5 0/9] phy: Add new Exynos USB 2.0 PHY driver Kamil Debski
2014-01-02 16:20     ` Kamil Debski
2014-01-02 16:31     ` Kishon Vijay Abraham I
2014-01-02 16:31       ` Kishon Vijay Abraham I
2013-12-20 13:24 ` [PATCH RFC alternative ver 2] phy: Exynos 421x USB 2.0 PHY support Kamil Debski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52CA5772.1010300@ti.com \
    --to=kishon-l0cymroini0@public.gmane.org \
    --cc=av.tikhomirov-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=gautam.vivek-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=jg1.han-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=mat.krawczuk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=matt.porter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
    --cc=t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=tjakobi-o02PS0xoJP9W0yFyLvAVXMxlOr/tl8fh@public.gmane.org \
    --cc=yulgon.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.