brcm47xx: deactivate mips wait instruction only for BCM4706
[openwrt.git] / target / linux / brcm47xx / patches-3.10 / 201-b44-use-B44_FLAG_EXTERNAL_PHY.patch
1 From 3fc36ba561bd9a9bdc097d6ace32f1303364268c Mon Sep 17 00:00:00 2001
2 From: Hauke Mehrtens <hauke@hauke-m.de>
3 Date: Tue, 22 Oct 2013 21:05:25 +0200
4 Subject: [PATCH 2/9] b44: use B44_FLAG_EXTERNAL_PHY
5
6 ---
7  drivers/net/ethernet/broadcom/b44.c |   18 +++++++++---------
8  drivers/net/ethernet/broadcom/b44.h |    2 +-
9  2 files changed, 10 insertions(+), 10 deletions(-)
10
11 --- a/drivers/net/ethernet/broadcom/b44.c
12 +++ b/drivers/net/ethernet/broadcom/b44.c
13 @@ -284,7 +284,7 @@ static int __b44_writephy(struct b44 *bp
14  
15  static inline int b44_readphy(struct b44 *bp, int reg, u32 *val)
16  {
17 -       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
18 +       if (bp->flags & B44_FLAG_EXTERNAL_PHY)
19                 return 0;
20  
21         return __b44_readphy(bp, bp->phy_addr, reg, val);
22 @@ -292,7 +292,7 @@ static inline int b44_readphy(struct b44
23  
24  static inline int b44_writephy(struct b44 *bp, int reg, u32 val)
25  {
26 -       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
27 +       if (bp->flags & B44_FLAG_EXTERNAL_PHY)
28                 return 0;
29  
30         return __b44_writephy(bp, bp->phy_addr, reg, val);
31 @@ -321,7 +321,7 @@ static int b44_phy_reset(struct b44 *bp)
32         u32 val;
33         int err;
34  
35 -       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
36 +       if (bp->flags & B44_FLAG_EXTERNAL_PHY)
37                 return 0;
38         err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
39         if (err)
40 @@ -423,7 +423,7 @@ static int b44_setup_phy(struct b44 *bp)
41  
42         b44_wap54g10_workaround(bp);
43  
44 -       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
45 +       if (bp->flags & B44_FLAG_EXTERNAL_PHY)
46                 return 0;
47         if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0)
48                 goto out;
49 @@ -521,7 +521,7 @@ static void b44_check_phy(struct b44 *bp
50  {
51         u32 bmsr, aux;
52  
53 -       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) {
54 +       if (bp->flags & B44_FLAG_EXTERNAL_PHY) {
55                 bp->flags |= B44_FLAG_100_BASE_T;
56                 bp->flags |= B44_FLAG_FULL_DUPLEX;
57                 if (!netif_carrier_ok(bp->dev)) {
58 @@ -1315,7 +1315,7 @@ static void b44_chip_reset(struct b44 *b
59         if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) {
60                 bw32(bp, B44_ENET_CTRL, ENET_CTRL_EPSEL);
61                 br32(bp, B44_ENET_CTRL);
62 -               bp->flags &= ~B44_FLAG_INTERNAL_PHY;
63 +               bp->flags |= B44_FLAG_EXTERNAL_PHY;
64         } else {
65                 u32 val = br32(bp, B44_DEVCTRL);
66  
67 @@ -1324,7 +1324,7 @@ static void b44_chip_reset(struct b44 *b
68                         br32(bp, B44_DEVCTRL);
69                         udelay(100);
70                 }
71 -               bp->flags |= B44_FLAG_INTERNAL_PHY;
72 +               bp->flags &= ~B44_FLAG_EXTERNAL_PHY;
73         }
74  }
75  
76 @@ -1828,8 +1828,8 @@ static int b44_get_settings(struct net_d
77                 DUPLEX_FULL : DUPLEX_HALF;
78         cmd->port = 0;
79         cmd->phy_address = bp->phy_addr;
80 -       cmd->transceiver = (bp->flags & B44_FLAG_INTERNAL_PHY) ?
81 -               XCVR_INTERNAL : XCVR_EXTERNAL;
82 +       cmd->transceiver = (bp->flags & B44_FLAG_EXTERNAL_PHY) ?
83 +               XCVR_EXTERNAL : XCVR_INTERNAL;
84         cmd->autoneg = (bp->flags & B44_FLAG_FORCE_LINK) ?
85                 AUTONEG_DISABLE : AUTONEG_ENABLE;
86         if (cmd->autoneg == AUTONEG_ENABLE)
87 --- a/drivers/net/ethernet/broadcom/b44.h
88 +++ b/drivers/net/ethernet/broadcom/b44.h
89 @@ -376,7 +376,7 @@ struct b44 {
90  #define B44_FLAG_ADV_10FULL    0x02000000
91  #define B44_FLAG_ADV_100HALF   0x04000000
92  #define B44_FLAG_ADV_100FULL   0x08000000
93 -#define B44_FLAG_INTERNAL_PHY  0x10000000
94 +#define B44_FLAG_EXTERNAL_PHY  0x10000000
95  #define B44_FLAG_RX_RING_HACK  0x20000000
96  #define B44_FLAG_TX_RING_HACK  0x40000000
97  #define B44_FLAG_WOL_ENABLE    0x80000000