All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: "Yendapally Reddy Dhananjaya Reddy"
	<yendapally.reddy@broadcom.com>,
	"Jon Mason" <jonmason@broadcom.com>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	bcm-kernel-feedback-list@broadcom.com,
	linux-kernel@vger.kernel.org, "Rafał Miłecki" <rafal@milecki.pl>
Subject: Re: [PATCH] phy: bcm-ns-usb3: split all writes into reg & val pairs
Date: Wed, 5 Apr 2017 15:40:59 +0530	[thread overview]
Message-ID: <a5216597-2256-a665-2514-26eeba145210@ti.com> (raw)
In-Reply-To: <20170402165522.14058-1-zajec5@gmail.com>

Hi,

On Sunday 02 April 2017 10:25 PM, Rafał Miłecki wrote:
> From: Rafał Miłecki <rafal@milecki.pl>
> 
> So far all the PHY initialization was implemented using some totally
> magic values. There was some pattern there but it wasn't clear what is
> it about.
> 
> Thanks to the patch submitted by Broadcom:
> [PATCH 5/6] phy: Add USB3 PHY support for Broadcom NSP SoC
> and the upstream "iproc-mdio" driver we now know there is a MDIO bus
> underneath with PHY(s) and their registers.
> 
> It allows us to clean the driver a bit by making all these values less
> magical. The next step is switching to using a proper MDIO layer.
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> ---
>  drivers/phy/phy-bcm-ns-usb3.c | 69 ++++++++++++++++++++++++++++++-------------
>  1 file changed, 49 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/phy/phy-bcm-ns-usb3.c b/drivers/phy/phy-bcm-ns-usb3.c
> index f420fa4bebfc..22b5e7047fa6 100644
> --- a/drivers/phy/phy-bcm-ns-usb3.c
> +++ b/drivers/phy/phy-bcm-ns-usb3.c
> @@ -2,6 +2,7 @@
>   * Broadcom Northstar USB 3.0 PHY Driver
>   *
>   * Copyright (C) 2016 Rafał Miłecki <rafal@milecki.pl>
> + * Copyright (C) 2016 Broadcom
>   *
>   * All magic values used for initialization (and related comments) were obtained
>   * from Broadcom's SDK:
> @@ -23,6 +24,23 @@
>  
>  #define BCM_NS_USB3_MII_MNG_TIMEOUT_US	1000	/* usecs */
>  
> +#define BCM_NS_USB3_PHY_BASE_ADDR_REG	0x1f
> +#define BCM_NS_USB3_PHY_PLL30_BLOCK	0x8000
> +#define BCM_NS_USB3_PHY_TX_PMD_BLOCK	0x8040
> +#define BCM_NS_USB3_PHY_PIPE_BLOCK	0x8060
> +
> +/* Registers of PLL30 block */
> +#define BCM_NS_USB3_PLL_CONTROL		0x01
> +#define BCM_NS_USB3_PLLA_CONTROL0	0x0a
> +#define BCM_NS_USB3_PLLA_CONTROL1	0x0b
> +
> +/* Registers of TX PMD block */
> +#define BCM_NS_USB3_TX_PMD_CONTROL1	0x01
> +
> +/* Registers of PIPE block */
> +#define BCM_NS_USB3_LFPS_CMP		0x02
> +#define BCM_NS_USB3_LFPS_DEGLITCH	0x03
> +
>  enum bcm_ns_family {
>  	BCM_NS_UNKNOWN,
>  	BCM_NS_AX,
> @@ -76,8 +94,10 @@ static inline int bcm_ns_usb3_mii_mng_wait_idle(struct bcm_ns_usb3 *usb3)
>  				    usecs_to_jiffies(BCM_NS_USB3_MII_MNG_TIMEOUT_US));
>  }
>  
> -static int bcm_ns_usb3_mii_mng_write32(struct bcm_ns_usb3 *usb3, u32 value)
> +static int bcm_ns_usb3_mdio_phy_write(struct bcm_ns_usb3 *usb3, u16 reg,
> +				      u16 value)
>  {
> +	u32 tmp = 0;
>  	int err;
>  
>  	err = bcm_ns_usb3_mii_mng_wait_idle(usb3);
> @@ -86,7 +106,11 @@ static int bcm_ns_usb3_mii_mng_write32(struct bcm_ns_usb3 *usb3, u32 value)
>  		return err;
>  	}
>  
> -	writel(value, usb3->ccb_mii + BCMA_CCB_MII_MNG_CMD_DATA);
> +	/* TODO: Use a proper MDIO bus layer */

Instead of using this intermediate patch, can we directly convert this to
mdio_driver or you see issues with converting it?

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] phy: bcm-ns-usb3: split all writes into reg & val pairs
Date: Wed, 5 Apr 2017 15:40:59 +0530	[thread overview]
Message-ID: <a5216597-2256-a665-2514-26eeba145210@ti.com> (raw)
In-Reply-To: <20170402165522.14058-1-zajec5@gmail.com>

Hi,

On Sunday 02 April 2017 10:25 PM, Rafa? Mi?ecki wrote:
> From: Rafa? Mi?ecki <rafal@milecki.pl>
> 
> So far all the PHY initialization was implemented using some totally
> magic values. There was some pattern there but it wasn't clear what is
> it about.
> 
> Thanks to the patch submitted by Broadcom:
> [PATCH 5/6] phy: Add USB3 PHY support for Broadcom NSP SoC
> and the upstream "iproc-mdio" driver we now know there is a MDIO bus
> underneath with PHY(s) and their registers.
> 
> It allows us to clean the driver a bit by making all these values less
> magical. The next step is switching to using a proper MDIO layer.
> 
> Signed-off-by: Rafa? Mi?ecki <rafal@milecki.pl>
> ---
>  drivers/phy/phy-bcm-ns-usb3.c | 69 ++++++++++++++++++++++++++++++-------------
>  1 file changed, 49 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/phy/phy-bcm-ns-usb3.c b/drivers/phy/phy-bcm-ns-usb3.c
> index f420fa4bebfc..22b5e7047fa6 100644
> --- a/drivers/phy/phy-bcm-ns-usb3.c
> +++ b/drivers/phy/phy-bcm-ns-usb3.c
> @@ -2,6 +2,7 @@
>   * Broadcom Northstar USB 3.0 PHY Driver
>   *
>   * Copyright (C) 2016 Rafa? Mi?ecki <rafal@milecki.pl>
> + * Copyright (C) 2016 Broadcom
>   *
>   * All magic values used for initialization (and related comments) were obtained
>   * from Broadcom's SDK:
> @@ -23,6 +24,23 @@
>  
>  #define BCM_NS_USB3_MII_MNG_TIMEOUT_US	1000	/* usecs */
>  
> +#define BCM_NS_USB3_PHY_BASE_ADDR_REG	0x1f
> +#define BCM_NS_USB3_PHY_PLL30_BLOCK	0x8000
> +#define BCM_NS_USB3_PHY_TX_PMD_BLOCK	0x8040
> +#define BCM_NS_USB3_PHY_PIPE_BLOCK	0x8060
> +
> +/* Registers of PLL30 block */
> +#define BCM_NS_USB3_PLL_CONTROL		0x01
> +#define BCM_NS_USB3_PLLA_CONTROL0	0x0a
> +#define BCM_NS_USB3_PLLA_CONTROL1	0x0b
> +
> +/* Registers of TX PMD block */
> +#define BCM_NS_USB3_TX_PMD_CONTROL1	0x01
> +
> +/* Registers of PIPE block */
> +#define BCM_NS_USB3_LFPS_CMP		0x02
> +#define BCM_NS_USB3_LFPS_DEGLITCH	0x03
> +
>  enum bcm_ns_family {
>  	BCM_NS_UNKNOWN,
>  	BCM_NS_AX,
> @@ -76,8 +94,10 @@ static inline int bcm_ns_usb3_mii_mng_wait_idle(struct bcm_ns_usb3 *usb3)
>  				    usecs_to_jiffies(BCM_NS_USB3_MII_MNG_TIMEOUT_US));
>  }
>  
> -static int bcm_ns_usb3_mii_mng_write32(struct bcm_ns_usb3 *usb3, u32 value)
> +static int bcm_ns_usb3_mdio_phy_write(struct bcm_ns_usb3 *usb3, u16 reg,
> +				      u16 value)
>  {
> +	u32 tmp = 0;
>  	int err;
>  
>  	err = bcm_ns_usb3_mii_mng_wait_idle(usb3);
> @@ -86,7 +106,11 @@ static int bcm_ns_usb3_mii_mng_write32(struct bcm_ns_usb3 *usb3, u32 value)
>  		return err;
>  	}
>  
> -	writel(value, usb3->ccb_mii + BCMA_CCB_MII_MNG_CMD_DATA);
> +	/* TODO: Use a proper MDIO bus layer */

Instead of using this intermediate patch, can we directly convert this to
mdio_driver or you see issues with converting it?

Thanks
Kishon

  parent reply	other threads:[~2017-04-05 10:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-02 16:55 [PATCH] phy: bcm-ns-usb3: split all writes into reg & val pairs Rafał Miłecki
2017-04-02 16:55 ` Rafał Miłecki
2017-04-03  3:02 ` Jon Mason
2017-04-03  3:02   ` Jon Mason
2017-04-05 10:10 ` Kishon Vijay Abraham I [this message]
2017-04-05 10:10   ` Kishon Vijay Abraham I
2017-04-05 10:52   ` Rafał Miłecki
2017-04-05 10:52     ` Rafał Miłecki
2017-04-06 10:17     ` Kishon Vijay Abraham I
2017-04-06 10:17       ` Kishon Vijay Abraham I

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=a5216597-2256-a665-2514-26eeba145210@ti.com \
    --to=kishon@ti.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=f.fainelli@gmail.com \
    --cc=jonmason@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafal@milecki.pl \
    --cc=yendapally.reddy@broadcom.com \
    --cc=zajec5@gmail.com \
    /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.