From: Kishon Vijay Abraham I <kishon@ti.com>
To: Roger Quadros <rogerq@ti.com>, tj@kernel.org
Cc: sergei.shtylyov@cogentembedded.com, b.zolnierkie@samsung.com,
hdegoede@redhat.com, arnd@arndb.de, linux-ide@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
Balaji T K <balajitk@ti.com>
Subject: Re: [PATCH v4 2/3] ata: ahci_platform: Manage SATA PHY
Date: Fri, 10 Jan 2014 19:55:03 +0530 [thread overview]
Message-ID: <52D002BF.7010807@ti.com> (raw)
In-Reply-To: <1389264962-22858-3-git-send-email-rogerq@ti.com>
On Thursday 09 January 2014 04:26 PM, Roger Quadros wrote:
> From: Balaji T K <balajitk@ti.com>
>
> Some platforms have a PHY hooked up to the
> SATA controller. The PHY needs to be initialized
> and powered up for SATA to work. We do that
> using the PHY framework.
>
> [Roger Q] Cleaned up.
>
> CC: Tejun Heo <tj@kernel.org>
> Signed-off-by: Balaji T K <balajitk@ti.com>
> Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
> drivers/ata/ahci.h | 2 ++
> drivers/ata/ahci_platform.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
> index 2289efd..f9bbada 100644
> --- a/drivers/ata/ahci.h
> +++ b/drivers/ata/ahci.h
> @@ -37,6 +37,7 @@
>
> #include <linux/clk.h>
> #include <linux/libata.h>
> +#include <linux/phy/phy.h>
>
> /* Enclosure Management Control */
> #define EM_CTRL_MSG_TYPE 0x000f0000
> @@ -322,6 +323,7 @@ struct ahci_host_priv {
> u32 em_buf_sz; /* EM buffer size in byte */
> u32 em_msg_type; /* EM message type */
> struct clk *clk; /* Only for platforms supporting clk */
> + struct phy *phy; /* If platform uses phy */
> void *plat_data; /* Other platform data */
> };
>
> diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
> index d5ced13..b476642 100644
> --- a/drivers/ata/ahci_platform.c
> +++ b/drivers/ata/ahci_platform.c
> @@ -142,6 +142,39 @@ static int ahci_probe(struct platform_device *pdev)
> }
> }
>
> + hpriv->phy = devm_phy_get(dev, "sata-phy");
> + if (IS_ERR(hpriv->phy)) {
> + rc = PTR_ERR(hpriv->phy);
> + switch (rc) {
> + case -ENODEV:
> + case -ENOSYS:
> + /* continue normally */
> + hpriv->phy = NULL;
> + break;
> +
> + case -EPROBE_DEFER:
> + goto disable_unprepare_clk;
> + break;
> +
> + default:
> + dev_err(dev, "couldn't get sata-phy\n");
> + goto disable_unprepare_clk;
> + break;
> + }
> + }
> +
> + if (hpriv->phy) {
> + rc = phy_init(hpriv->phy);
> + if (rc)
> + goto disable_unprepare_clk;
> +
> + rc = phy_power_on(hpriv->phy);
> + if (rc) {
> + phy_exit(hpriv->phy);
> + goto disable_unprepare_clk;
> + }
> + }
> +
> /*
> * Some platforms might need to prepare for mmio region access,
> * which could be done in the following init call. So, the mmio
> @@ -151,7 +184,7 @@ static int ahci_probe(struct platform_device *pdev)
> if (pdata && pdata->init) {
> rc = pdata->init(dev, hpriv->mmio);
> if (rc)
> - goto disable_unprepare_clk;
> + goto disable_phy;
> }
>
> ahci_save_initial_config(dev, hpriv,
> @@ -221,6 +254,12 @@ static int ahci_probe(struct platform_device *pdev)
> pdata_exit:
> if (pdata && pdata->exit)
> pdata->exit(dev);
> +disable_phy:
> + if (hpriv->phy) {
> + phy_power_off(hpriv->phy);
> + phy_exit(hpriv->phy);
> + }
> +
> disable_unprepare_clk:
> if (!IS_ERR(hpriv->clk))
> clk_disable_unprepare(hpriv->clk);
> @@ -239,6 +278,11 @@ static void ahci_host_stop(struct ata_host *host)
> if (pdata && pdata->exit)
> pdata->exit(dev);
>
> + if (hpriv->phy) {
> + phy_power_off(hpriv->phy);
> + phy_exit(hpriv->phy);
> + }
> +
> if (!IS_ERR(hpriv->clk)) {
> clk_disable_unprepare(hpriv->clk);
> clk_put(hpriv->clk);
>
WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Roger Quadros <rogerq@ti.com>, <tj@kernel.org>
Cc: <sergei.shtylyov@cogentembedded.com>, <b.zolnierkie@samsung.com>,
<hdegoede@redhat.com>, <arnd@arndb.de>,
<linux-ide@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<devicetree@vger.kernel.org>, Balaji T K <balajitk@ti.com>
Subject: Re: [PATCH v4 2/3] ata: ahci_platform: Manage SATA PHY
Date: Fri, 10 Jan 2014 19:55:03 +0530 [thread overview]
Message-ID: <52D002BF.7010807@ti.com> (raw)
In-Reply-To: <1389264962-22858-3-git-send-email-rogerq@ti.com>
On Thursday 09 January 2014 04:26 PM, Roger Quadros wrote:
> From: Balaji T K <balajitk@ti.com>
>
> Some platforms have a PHY hooked up to the
> SATA controller. The PHY needs to be initialized
> and powered up for SATA to work. We do that
> using the PHY framework.
>
> [Roger Q] Cleaned up.
>
> CC: Tejun Heo <tj@kernel.org>
> Signed-off-by: Balaji T K <balajitk@ti.com>
> Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
> drivers/ata/ahci.h | 2 ++
> drivers/ata/ahci_platform.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
> index 2289efd..f9bbada 100644
> --- a/drivers/ata/ahci.h
> +++ b/drivers/ata/ahci.h
> @@ -37,6 +37,7 @@
>
> #include <linux/clk.h>
> #include <linux/libata.h>
> +#include <linux/phy/phy.h>
>
> /* Enclosure Management Control */
> #define EM_CTRL_MSG_TYPE 0x000f0000
> @@ -322,6 +323,7 @@ struct ahci_host_priv {
> u32 em_buf_sz; /* EM buffer size in byte */
> u32 em_msg_type; /* EM message type */
> struct clk *clk; /* Only for platforms supporting clk */
> + struct phy *phy; /* If platform uses phy */
> void *plat_data; /* Other platform data */
> };
>
> diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
> index d5ced13..b476642 100644
> --- a/drivers/ata/ahci_platform.c
> +++ b/drivers/ata/ahci_platform.c
> @@ -142,6 +142,39 @@ static int ahci_probe(struct platform_device *pdev)
> }
> }
>
> + hpriv->phy = devm_phy_get(dev, "sata-phy");
> + if (IS_ERR(hpriv->phy)) {
> + rc = PTR_ERR(hpriv->phy);
> + switch (rc) {
> + case -ENODEV:
> + case -ENOSYS:
> + /* continue normally */
> + hpriv->phy = NULL;
> + break;
> +
> + case -EPROBE_DEFER:
> + goto disable_unprepare_clk;
> + break;
> +
> + default:
> + dev_err(dev, "couldn't get sata-phy\n");
> + goto disable_unprepare_clk;
> + break;
> + }
> + }
> +
> + if (hpriv->phy) {
> + rc = phy_init(hpriv->phy);
> + if (rc)
> + goto disable_unprepare_clk;
> +
> + rc = phy_power_on(hpriv->phy);
> + if (rc) {
> + phy_exit(hpriv->phy);
> + goto disable_unprepare_clk;
> + }
> + }
> +
> /*
> * Some platforms might need to prepare for mmio region access,
> * which could be done in the following init call. So, the mmio
> @@ -151,7 +184,7 @@ static int ahci_probe(struct platform_device *pdev)
> if (pdata && pdata->init) {
> rc = pdata->init(dev, hpriv->mmio);
> if (rc)
> - goto disable_unprepare_clk;
> + goto disable_phy;
> }
>
> ahci_save_initial_config(dev, hpriv,
> @@ -221,6 +254,12 @@ static int ahci_probe(struct platform_device *pdev)
> pdata_exit:
> if (pdata && pdata->exit)
> pdata->exit(dev);
> +disable_phy:
> + if (hpriv->phy) {
> + phy_power_off(hpriv->phy);
> + phy_exit(hpriv->phy);
> + }
> +
> disable_unprepare_clk:
> if (!IS_ERR(hpriv->clk))
> clk_disable_unprepare(hpriv->clk);
> @@ -239,6 +278,11 @@ static void ahci_host_stop(struct ata_host *host)
> if (pdata && pdata->exit)
> pdata->exit(dev);
>
> + if (hpriv->phy) {
> + phy_power_off(hpriv->phy);
> + phy_exit(hpriv->phy);
> + }
> +
> if (!IS_ERR(hpriv->clk)) {
> clk_disable_unprepare(hpriv->clk);
> clk_put(hpriv->clk);
>
next prev parent reply other threads:[~2014-01-10 14:25 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-09 10:55 [PATCH v4 0/3] ata: ahci_platform: Add PHY support and OMAP support Roger Quadros
2014-01-09 10:55 ` Roger Quadros
2014-01-09 10:56 ` [PATCH v4 1/3] ata: ahci_platform: Update DT compatible list Roger Quadros
2014-01-09 10:56 ` Roger Quadros
[not found] ` <1389264962-22858-1-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2014-01-09 10:56 ` [PATCH v4 2/3] ata: ahci_platform: Manage SATA PHY Roger Quadros
2014-01-09 10:56 ` Roger Quadros
2014-01-09 11:20 ` Sergei Shtylyov
2014-01-09 11:37 ` Roger Quadros
2014-01-09 11:37 ` Roger Quadros
2014-01-09 15:00 ` Tejun Heo
2014-01-20 8:20 ` Roger Quadros
2014-01-20 8:20 ` Roger Quadros
2014-01-10 14:25 ` Kishon Vijay Abraham I [this message]
2014-01-10 14:25 ` Kishon Vijay Abraham I
2014-01-09 10:56 ` [PATCH v4 3/3] ata: ahci_platform: runtime resume the device before use Roger Quadros
2014-01-09 10:56 ` Roger Quadros
2014-01-09 11:05 ` [PATCH v4 0/3] ata: ahci_platform: Add PHY support and OMAP support Arnd Bergmann
2014-01-09 11:33 ` Bartlomiej Zolnierkiewicz
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=52D002BF.7010807@ti.com \
--to=kishon@ti.com \
--cc=arnd@arndb.de \
--cc=b.zolnierkie@samsung.com \
--cc=balajitk@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=hdegoede@redhat.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rogerq@ti.com \
--cc=sergei.shtylyov@cogentembedded.com \
--cc=tj@kernel.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.