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: Thu, 6 Apr 2017 15:47:11 +0530 [thread overview]
Message-ID: <de0d0714-0be2-5050-af8b-d1d9d2843ef1@ti.com> (raw)
In-Reply-To: <7c67eea1-1a01-5e20-5a77-41b1f8a32471@gmail.com>
On Wednesday 05 April 2017 04:22 PM, Rafał Miłecki wrote:
> On 04/05/2017 12:10 PM, Kishon Vijay Abraham I wrote:
>> 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?
>
> This is a bit more complex task with some possible issues to consider:
> 1) Backward compatibility - should we still support old DTB files?
> 2) Support for PHY DT node put in MDIO bus node - it requires reg = <phy num>;
> which is in conflict with current "reg" usage
> 3) Support for different reset reg - Northstar+ uses a different one - we'll
> probably need a syscon
> 4) My limited time (sadly)
Er..
>
> The good point of this patch is that all changes made in:
> bcm_ns_usb3_phy_init_ns_ax
> bcm_ns_usb3_phy_init_ns_bx
> will survive, so we're not going to change all the code back and forth.
>
> If that's acceptable for you, I'd prefer to handle this with smaller patches.
All right. I'll merge the patch as it is now.
Thanks
Kishon
prev parent reply other threads:[~2017-04-06 10:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-02 16:55 Rafał Miłecki
2017-04-03 3:02 ` Jon Mason
2017-04-05 10:10 ` Kishon Vijay Abraham I
2017-04-05 10:52 ` Rafał Miłecki
2017-04-06 10:17 ` Kishon Vijay Abraham I [this message]
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=de0d0714-0be2-5050-af8b-d1d9d2843ef1@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®