netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] bgmac: drop duplicated PHY defines
@ 2013-12-10  9:49 Rafał Miłecki
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-10  9:49 UTC (permalink / raw)
  To: netdev, David S. Miller; +Cc: Hauke Mehrtens, Rafał Miłecki

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
 drivers/net/ethernet/broadcom/bgmac.c |    6 ++----
 drivers/net/ethernet/broadcom/bgmac.h |   21 ---------------------
 2 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index 0452937..ad4b2f1 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -725,11 +725,9 @@ static void bgmac_phy_reset(struct bgmac *bgmac)
 	if (bgmac->phyaddr == BGMAC_PHY_NOREGS)
 		return;
 
-	bgmac_phy_write(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL,
-			BGMAC_PHY_CTL_RESET);
+	bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
 	udelay(100);
-	if (bgmac_phy_read(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL) &
-	    BGMAC_PHY_CTL_RESET)
+	if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
 		bgmac_err(bgmac, "PHY reset failed\n");
 	bgmac_phy_init(bgmac);
 }
diff --git a/drivers/net/ethernet/broadcom/bgmac.h b/drivers/net/ethernet/broadcom/bgmac.h
index 550f2a8..1c752ce 100644
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -216,27 +216,6 @@
 #define BGMAC_RX_STATUS				0xb38
 #define BGMAC_TX_STATUS				0xb3c
 
-#define BGMAC_PHY_CTL				0x00
-#define  BGMAC_PHY_CTL_SPEED_MSB		0x0040
-#define  BGMAC_PHY_CTL_DUPLEX			0x0100		/* duplex mode */
-#define  BGMAC_PHY_CTL_RESTART			0x0200		/* restart autonegotiation */
-#define  BGMAC_PHY_CTL_ANENAB			0x1000		/* enable autonegotiation */
-#define  BGMAC_PHY_CTL_SPEED			0x2000
-#define  BGMAC_PHY_CTL_LOOP			0x4000		/* loopback */
-#define  BGMAC_PHY_CTL_RESET			0x8000		/* reset */
-/* Helpers */
-#define  BGMAC_PHY_CTL_SPEED_10			0
-#define  BGMAC_PHY_CTL_SPEED_100		BGMAC_PHY_CTL_SPEED
-#define  BGMAC_PHY_CTL_SPEED_1000		BGMAC_PHY_CTL_SPEED_MSB
-#define BGMAC_PHY_ADV				0x04
-#define  BGMAC_PHY_ADV_10HALF			0x0020		/* advertise 10MBits/s half duplex */
-#define  BGMAC_PHY_ADV_10FULL			0x0040		/* advertise 10MBits/s full duplex */
-#define  BGMAC_PHY_ADV_100HALF			0x0080		/* advertise 100MBits/s half duplex */
-#define  BGMAC_PHY_ADV_100FULL			0x0100		/* advertise 100MBits/s full duplex */
-#define BGMAC_PHY_ADV2				0x09
-#define  BGMAC_PHY_ADV2_1000HALF		0x0100		/* advertise 1000MBits/s half duplex */
-#define  BGMAC_PHY_ADV2_1000FULL		0x0200		/* advertise 1000MBits/s full duplex */
-
 /* BCMA GMAC core specific IO Control (BCMA_IOCTL) flags */
 #define BGMAC_BCMA_IOCTL_SW_CLKEN		0x00000004	/* PHY Clock Enable */
 #define BGMAC_BCMA_IOCTL_SW_RESET		0x00000008	/* PHY Reset */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler
  2013-12-10  9:49 [PATCH 1/2] bgmac: drop duplicated PHY defines Rafał Miłecki
@ 2013-12-10  9:49 ` Rafał Miłecki
  2013-12-10  9:51   ` Rafał Miłecki
                     ` (2 more replies)
  2013-12-10 17:10 ` [PATCH 1/2] bgmac: drop duplicated PHY defines Florian Fainelli
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-10  9:49 UTC (permalink / raw)
  To: netdev, David S. Miller; +Cc: Hauke Mehrtens, Rafał Miłecki

From: Hauke Mehrtens <hauke@hauke-m.de>

This works pretty much the same way, so avoid duplicating the code.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
 drivers/net/ethernet/broadcom/bgmac.c |   26 +++++---------------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index ad4b2f1..db71d75 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1187,27 +1187,11 @@ static int bgmac_set_mac_address(struct net_device *net_dev, void *addr)
 static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd)
 {
 	struct bgmac *bgmac = netdev_priv(net_dev);
-	struct mii_ioctl_data *data = if_mii(ifr);
-
-	switch (cmd) {
-	case SIOCGMIIPHY:
-		data->phy_id = bgmac->phyaddr;
-		/* fallthru */
-	case SIOCGMIIREG:
-		if (!netif_running(net_dev))
-			return -EAGAIN;
-		data->val_out = bgmac_phy_read(bgmac, data->phy_id,
-					       data->reg_num & 0x1f);
-		return 0;
-	case SIOCSMIIREG:
-		if (!netif_running(net_dev))
-			return -EAGAIN;
-		bgmac_phy_write(bgmac, data->phy_id, data->reg_num & 0x1f,
-				data->val_in);
-		return 0;
-	default:
-		return -EOPNOTSUPP;
-	}
+
+	if (!netif_running(net_dev))
+		return -EINVAL;
+
+	return phy_mii_ioctl(bgmac->phy_dev, ifr, cmd);
 }
 
 static const struct net_device_ops bgmac_netdev_ops = {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
@ 2013-12-10  9:51   ` Rafał Miłecki
  2013-12-10 17:11   ` Florian Fainelli
  2013-12-20 14:34   ` [RESEND][PATCH next " Rafał Miłecki
  2 siblings, 0 replies; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-10  9:51 UTC (permalink / raw)
  To: Network Development, David S. Miller; +Cc: Hauke Mehrtens

2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
> From: Hauke Mehrtens <hauke@hauke-m.de>
>
> This works pretty much the same way, so avoid duplicating the code.
>
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

I forgot "git am" and "git format-patch" drop my comments. There is goest:

> This ports part of Hauke's patch from OpenWrt.
>
> Hauks: I've just dropped
> if (!bgmac->phydev)
> return -EINVAL;
> as we are guaranteed to have PHY dev.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] bgmac: drop duplicated PHY defines
  2013-12-10  9:49 [PATCH 1/2] bgmac: drop duplicated PHY defines Rafał Miłecki
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
@ 2013-12-10 17:10 ` Florian Fainelli
  2013-12-10 17:36   ` Rafał Miłecki
  2013-12-11  6:10 ` Rafał Miłecki
  2013-12-20 14:33 ` [RESEND][PATCH next " Rafał Miłecki
  3 siblings, 1 reply; 12+ messages in thread
From: Florian Fainelli @ 2013-12-10 17:10 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: netdev, David S. Miller, Hauke Mehrtens

Hello Rafal

2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
>  drivers/net/ethernet/broadcom/bgmac.c |    6 ++----
>  drivers/net/ethernet/broadcom/bgmac.h |   21 ---------------------
>  2 files changed, 2 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
> index 0452937..ad4b2f1 100644
> --- a/drivers/net/ethernet/broadcom/bgmac.c
> +++ b/drivers/net/ethernet/broadcom/bgmac.c
> @@ -725,11 +725,9 @@ static void bgmac_phy_reset(struct bgmac *bgmac)
>         if (bgmac->phyaddr == BGMAC_PHY_NOREGS)
>                 return;
>
> -       bgmac_phy_write(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL,
> -                       BGMAC_PHY_CTL_RESET);
> +       bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
>         udelay(100);
> -       if (bgmac_phy_read(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL) &
> -           BGMAC_PHY_CTL_RESET)
> +       if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
>                 bgmac_err(bgmac, "PHY reset failed\n");
>         bgmac_phy_init(bgmac);

phy_init_hw() now issues a PHY reset through BMCR_RESET, you might
want to use it instead of this here:

- the 100 microseconds delay might not be sufficient for all PHYs out there
- any PHY fixup (although there are none for BCM47xx yet) would be
wiped out by this "wild" PHY reset

This is quite new, so I do not expect you knew about this.
--
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
  2013-12-10  9:51   ` Rafał Miłecki
@ 2013-12-10 17:11   ` Florian Fainelli
  2013-12-20 14:34   ` [RESEND][PATCH next " Rafał Miłecki
  2 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2013-12-10 17:11 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: netdev, David S. Miller, Hauke Mehrtens

2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
> From: Hauke Mehrtens <hauke@hauke-m.de>
>
> This works pretty much the same way, so avoid duplicating the code.
>
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

Acked-by: Florian Fainelli <f.fainelli@gmail.com>

> ---
>  drivers/net/ethernet/broadcom/bgmac.c |   26 +++++---------------------
>  1 file changed, 5 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
> index ad4b2f1..db71d75 100644
> --- a/drivers/net/ethernet/broadcom/bgmac.c
> +++ b/drivers/net/ethernet/broadcom/bgmac.c
> @@ -1187,27 +1187,11 @@ static int bgmac_set_mac_address(struct net_device *net_dev, void *addr)
>  static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd)
>  {
>         struct bgmac *bgmac = netdev_priv(net_dev);
> -       struct mii_ioctl_data *data = if_mii(ifr);
> -
> -       switch (cmd) {
> -       case SIOCGMIIPHY:
> -               data->phy_id = bgmac->phyaddr;
> -               /* fallthru */
> -       case SIOCGMIIREG:
> -               if (!netif_running(net_dev))
> -                       return -EAGAIN;
> -               data->val_out = bgmac_phy_read(bgmac, data->phy_id,
> -                                              data->reg_num & 0x1f);
> -               return 0;
> -       case SIOCSMIIREG:
> -               if (!netif_running(net_dev))
> -                       return -EAGAIN;
> -               bgmac_phy_write(bgmac, data->phy_id, data->reg_num & 0x1f,
> -                               data->val_in);
> -               return 0;
> -       default:
> -               return -EOPNOTSUPP;
> -       }
> +
> +       if (!netif_running(net_dev))
> +               return -EINVAL;
> +
> +       return phy_mii_ioctl(bgmac->phy_dev, ifr, cmd);
>  }
>
>  static const struct net_device_ops bgmac_netdev_ops = {
> --
> 1.7.10.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] bgmac: drop duplicated PHY defines
  2013-12-10 17:10 ` [PATCH 1/2] bgmac: drop duplicated PHY defines Florian Fainelli
@ 2013-12-10 17:36   ` Rafał Miłecki
  2013-12-10 17:53     ` Florian Fainelli
  0 siblings, 1 reply; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-10 17:36 UTC (permalink / raw)
  To: Florian Fainelli; +Cc: netdev, David S. Miller, Hauke Mehrtens

2013/12/10 Florian Fainelli <f.fainelli@gmail.com>:
> Hello Rafal
>
> 2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>> ---
>>  drivers/net/ethernet/broadcom/bgmac.c |    6 ++----
>>  drivers/net/ethernet/broadcom/bgmac.h |   21 ---------------------
>>  2 files changed, 2 insertions(+), 25 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
>> index 0452937..ad4b2f1 100644
>> --- a/drivers/net/ethernet/broadcom/bgmac.c
>> +++ b/drivers/net/ethernet/broadcom/bgmac.c
>> @@ -725,11 +725,9 @@ static void bgmac_phy_reset(struct bgmac *bgmac)
>>         if (bgmac->phyaddr == BGMAC_PHY_NOREGS)
>>                 return;
>>
>> -       bgmac_phy_write(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL,
>> -                       BGMAC_PHY_CTL_RESET);
>> +       bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
>>         udelay(100);
>> -       if (bgmac_phy_read(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL) &
>> -           BGMAC_PHY_CTL_RESET)
>> +       if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
>>                 bgmac_err(bgmac, "PHY reset failed\n");
>>         bgmac_phy_init(bgmac);
>
> phy_init_hw() now issues a PHY reset through BMCR_RESET, you might
> want to use it instead of this here:
>
> - the 100 microseconds delay might not be sufficient for all PHYs out there
> - any PHY fixup (although there are none for BCM47xx yet) would be
> wiped out by this "wild" PHY reset
>
> This is quite new, so I do not expect you knew about this.

Thanks for pointing that! I was looking for BMCR_RESET usages with:
http://lxr.free-electrons.com/ident?v=3.12;i=BMCR_RESET
but it didn't find any interesting (because it uses 3.12 kernel sources).

This udelay is from specs based on Broadcom's code. What you have in
phy_poll_reset sounds indeed much more sane.

If you take a look at bgmac_phy_init, it actually has kind of fixups.
They are just programmed per-Broadcom chip id and not per PHY id as
you normally do that with phy_register_fixup_for_uid. But I think we
should be able to workaround that.

So I fully agree we should use phy_init_hw, but I think we should
implement that in a separated patch and on top of PHY cleanups I
recently did. Just to simplify bisecting potential regressions.

Are you OK with applying this patch as-is and working on another one
cleaning PHY reset/init in a nicer way?

-- 
Rafał

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] bgmac: drop duplicated PHY defines
  2013-12-10 17:36   ` Rafał Miłecki
@ 2013-12-10 17:53     ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2013-12-10 17:53 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: netdev, David S. Miller, Hauke Mehrtens

2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
> 2013/12/10 Florian Fainelli <f.fainelli@gmail.com>:
>> Hello Rafal
>>
>> 2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
>>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>>> ---
>>>  drivers/net/ethernet/broadcom/bgmac.c |    6 ++----
>>>  drivers/net/ethernet/broadcom/bgmac.h |   21 ---------------------
>>>  2 files changed, 2 insertions(+), 25 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
>>> index 0452937..ad4b2f1 100644
>>> --- a/drivers/net/ethernet/broadcom/bgmac.c
>>> +++ b/drivers/net/ethernet/broadcom/bgmac.c
>>> @@ -725,11 +725,9 @@ static void bgmac_phy_reset(struct bgmac *bgmac)
>>>         if (bgmac->phyaddr == BGMAC_PHY_NOREGS)
>>>                 return;
>>>
>>> -       bgmac_phy_write(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL,
>>> -                       BGMAC_PHY_CTL_RESET);
>>> +       bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
>>>         udelay(100);
>>> -       if (bgmac_phy_read(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL) &
>>> -           BGMAC_PHY_CTL_RESET)
>>> +       if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
>>>                 bgmac_err(bgmac, "PHY reset failed\n");
>>>         bgmac_phy_init(bgmac);
>>
>> phy_init_hw() now issues a PHY reset through BMCR_RESET, you might
>> want to use it instead of this here:
>>
>> - the 100 microseconds delay might not be sufficient for all PHYs out there
>> - any PHY fixup (although there are none for BCM47xx yet) would be
>> wiped out by this "wild" PHY reset
>>
>> This is quite new, so I do not expect you knew about this.
>
> Thanks for pointing that! I was looking for BMCR_RESET usages with:
> http://lxr.free-electrons.com/ident?v=3.12;i=BMCR_RESET
> but it didn't find any interesting (because it uses 3.12 kernel sources).
>
> This udelay is from specs based on Broadcom's code. What you have in
> phy_poll_reset sounds indeed much more sane.
>
> If you take a look at bgmac_phy_init, it actually has kind of fixups.
> They are just programmed per-Broadcom chip id and not per PHY id as
> you normally do that with phy_register_fixup_for_uid. But I think we
> should be able to workaround that.
>
> So I fully agree we should use phy_init_hw, but I think we should
> implement that in a separated patch and on top of PHY cleanups I
> recently did. Just to simplify bisecting potential regressions.

Sounds good!

>
> Are you OK with applying this patch as-is and working on another one
> cleaning PHY reset/init in a nicer way?

Oh yes, this patch just made me look at the code, but your cleanups
are good. Thanks!
-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] bgmac: drop duplicated PHY defines
  2013-12-10  9:49 [PATCH 1/2] bgmac: drop duplicated PHY defines Rafał Miłecki
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
  2013-12-10 17:10 ` [PATCH 1/2] bgmac: drop duplicated PHY defines Florian Fainelli
@ 2013-12-11  6:10 ` Rafał Miłecki
  2013-12-20 14:33 ` [RESEND][PATCH next " Rafał Miłecki
  3 siblings, 0 replies; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-11  6:10 UTC (permalink / raw)
  To: Network Development, David S. Miller; +Cc: Hauke Mehrtens

2013/12/10 Rafał Miłecki <zajec5@gmail.com>:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

David: this patchset is for net-next. Thanks.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [RESEND][PATCH next 1/2] bgmac: drop duplicated PHY defines
  2013-12-10  9:49 [PATCH 1/2] bgmac: drop duplicated PHY defines Rafał Miłecki
                   ` (2 preceding siblings ...)
  2013-12-11  6:10 ` Rafał Miłecki
@ 2013-12-20 14:33 ` Rafał Miłecki
  2013-12-27 18:28   ` David Miller
  3 siblings, 1 reply; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-20 14:33 UTC (permalink / raw)
  To: netdev, David S. Miller
  Cc: Hauke Mehrtens, Florian Fainelli, Rafał Miłecki

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
In future we should try to remove bgmac_phy_reset and use phy_init_hw.
However this requires rewriting our fixups first.

Dave: I suspect you may lost this patchset, thus resending. If they are
just waiting in your queue for the right moment, sorry, I didn't mean to
rush you!
---
 drivers/net/ethernet/broadcom/bgmac.c |    6 ++----
 drivers/net/ethernet/broadcom/bgmac.h |   21 ---------------------
 2 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index b665a6a..3cd5d68 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -725,11 +725,9 @@ static void bgmac_phy_reset(struct bgmac *bgmac)
 	if (bgmac->phyaddr == BGMAC_PHY_NOREGS)
 		return;
 
-	bgmac_phy_write(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL,
-			BGMAC_PHY_CTL_RESET);
+	bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
 	udelay(100);
-	if (bgmac_phy_read(bgmac, bgmac->phyaddr, BGMAC_PHY_CTL) &
-	    BGMAC_PHY_CTL_RESET)
+	if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
 		bgmac_err(bgmac, "PHY reset failed\n");
 	bgmac_phy_init(bgmac);
 }
diff --git a/drivers/net/ethernet/broadcom/bgmac.h b/drivers/net/ethernet/broadcom/bgmac.h
index 2d44119..130b16b 100644
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -220,27 +220,6 @@
 #define BGMAC_RX_STATUS				0xb38
 #define BGMAC_TX_STATUS				0xb3c
 
-#define BGMAC_PHY_CTL				0x00
-#define  BGMAC_PHY_CTL_SPEED_MSB		0x0040
-#define  BGMAC_PHY_CTL_DUPLEX			0x0100		/* duplex mode */
-#define  BGMAC_PHY_CTL_RESTART			0x0200		/* restart autonegotiation */
-#define  BGMAC_PHY_CTL_ANENAB			0x1000		/* enable autonegotiation */
-#define  BGMAC_PHY_CTL_SPEED			0x2000
-#define  BGMAC_PHY_CTL_LOOP			0x4000		/* loopback */
-#define  BGMAC_PHY_CTL_RESET			0x8000		/* reset */
-/* Helpers */
-#define  BGMAC_PHY_CTL_SPEED_10			0
-#define  BGMAC_PHY_CTL_SPEED_100		BGMAC_PHY_CTL_SPEED
-#define  BGMAC_PHY_CTL_SPEED_1000		BGMAC_PHY_CTL_SPEED_MSB
-#define BGMAC_PHY_ADV				0x04
-#define  BGMAC_PHY_ADV_10HALF			0x0020		/* advertise 10MBits/s half duplex */
-#define  BGMAC_PHY_ADV_10FULL			0x0040		/* advertise 10MBits/s full duplex */
-#define  BGMAC_PHY_ADV_100HALF			0x0080		/* advertise 100MBits/s half duplex */
-#define  BGMAC_PHY_ADV_100FULL			0x0100		/* advertise 100MBits/s full duplex */
-#define BGMAC_PHY_ADV2				0x09
-#define  BGMAC_PHY_ADV2_1000HALF		0x0100		/* advertise 1000MBits/s half duplex */
-#define  BGMAC_PHY_ADV2_1000FULL		0x0200		/* advertise 1000MBits/s full duplex */
-
 /* BCMA GMAC core specific IO Control (BCMA_IOCTL) flags */
 #define BGMAC_BCMA_IOCTL_SW_CLKEN		0x00000004	/* PHY Clock Enable */
 #define BGMAC_BCMA_IOCTL_SW_RESET		0x00000008	/* PHY Reset */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [RESEND][PATCH next 2/2] bgmac: use phy_mii_ioctl in ioctl handler
  2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
  2013-12-10  9:51   ` Rafał Miłecki
  2013-12-10 17:11   ` Florian Fainelli
@ 2013-12-20 14:34   ` Rafał Miłecki
  2013-12-27 18:28     ` David Miller
  2 siblings, 1 reply; 12+ messages in thread
From: Rafał Miłecki @ 2013-12-20 14:34 UTC (permalink / raw)
  To: netdev, David S. Miller
  Cc: Hauke Mehrtens, Florian Fainelli, Rafał Miłecki

From: Hauke Mehrtens <hauke@hauke-m.de>

This works pretty much the same way, so avoid duplicating the code.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
---
This ports part of Hauke's patch from OpenWrt.

Hauks: I've just dropped
if (!bgmac->phydev)
	return -EINVAL;
as we are guaranteed to have PHY dev.
---
 drivers/net/ethernet/broadcom/bgmac.c |   26 +++++---------------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index 3cd5d68..39efb86 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1198,27 +1198,11 @@ static int bgmac_set_mac_address(struct net_device *net_dev, void *addr)
 static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd)
 {
 	struct bgmac *bgmac = netdev_priv(net_dev);
-	struct mii_ioctl_data *data = if_mii(ifr);
-
-	switch (cmd) {
-	case SIOCGMIIPHY:
-		data->phy_id = bgmac->phyaddr;
-		/* fallthru */
-	case SIOCGMIIREG:
-		if (!netif_running(net_dev))
-			return -EAGAIN;
-		data->val_out = bgmac_phy_read(bgmac, data->phy_id,
-					       data->reg_num & 0x1f);
-		return 0;
-	case SIOCSMIIREG:
-		if (!netif_running(net_dev))
-			return -EAGAIN;
-		bgmac_phy_write(bgmac, data->phy_id, data->reg_num & 0x1f,
-				data->val_in);
-		return 0;
-	default:
-		return -EOPNOTSUPP;
-	}
+
+	if (!netif_running(net_dev))
+		return -EINVAL;
+
+	return phy_mii_ioctl(bgmac->phy_dev, ifr, cmd);
 }
 
 static const struct net_device_ops bgmac_netdev_ops = {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [RESEND][PATCH next 1/2] bgmac: drop duplicated PHY defines
  2013-12-20 14:33 ` [RESEND][PATCH next " Rafał Miłecki
@ 2013-12-27 18:28   ` David Miller
  0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2013-12-27 18:28 UTC (permalink / raw)
  To: zajec5; +Cc: netdev, hauke, f.fainelli

From: Rafał Miłecki <zajec5@gmail.com>
Date: Fri, 20 Dec 2013 15:33:52 +0100

> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

Applied.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RESEND][PATCH next 2/2] bgmac: use phy_mii_ioctl in ioctl handler
  2013-12-20 14:34   ` [RESEND][PATCH next " Rafał Miłecki
@ 2013-12-27 18:28     ` David Miller
  0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2013-12-27 18:28 UTC (permalink / raw)
  To: zajec5; +Cc: netdev, hauke, f.fainelli

From: Rafał Miłecki <zajec5@gmail.com>
Date: Fri, 20 Dec 2013 15:34:45 +0100

> From: Hauke Mehrtens <hauke@hauke-m.de>
> 
> This works pretty much the same way, so avoid duplicating the code.
> 
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> Acked-by: Florian Fainelli <f.fainelli@gmail.com>

Applied.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2013-12-27 18:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-10  9:49 [PATCH 1/2] bgmac: drop duplicated PHY defines Rafał Miłecki
2013-12-10  9:49 ` [PATCH 2/2] bgmac: use phy_mii_ioctl in ioctl handler Rafał Miłecki
2013-12-10  9:51   ` Rafał Miłecki
2013-12-10 17:11   ` Florian Fainelli
2013-12-20 14:34   ` [RESEND][PATCH next " Rafał Miłecki
2013-12-27 18:28     ` David Miller
2013-12-10 17:10 ` [PATCH 1/2] bgmac: drop duplicated PHY defines Florian Fainelli
2013-12-10 17:36   ` Rafał Miłecki
2013-12-10 17:53     ` Florian Fainelli
2013-12-11  6:10 ` Rafał Miłecki
2013-12-20 14:33 ` [RESEND][PATCH next " Rafał Miłecki
2013-12-27 18:28   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).