net: phy: broadcom: Fix bcm_write_exp()
authorFlorian Fainelli <f.fainelli@gmail.com>
Wed, 23 May 2018 00:04:49 +0000 (17:04 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 May 2018 19:27:01 +0000 (15:27 -0400)
commit79fb218d97980d4fee9a64f4c8ff05289364ba25
tree35e718d42a661052d29a42647495b6333d37fe6a
parent733a969a7ed14fc5786bcc59c1bdda83c7ddb46e
net: phy: broadcom: Fix bcm_write_exp()

On newer PHYs, we need to select the expansion register to write with
setting bits [11:8] to 0xf. This was done correctly by bcm7xxx.c prior
to being migrated to generic code under bcm-phy-lib.c which
unfortunately used the older implementation from the BCM54xx days.

Fix this by creating an inline stub: bcm_write_exp_sel() which adds the
correct value (MII_BCM54XX_EXP_SEL_ER) and update both the Cygnus PHY
and BCM7xxx PHY drivers which require setting these bits.

broadcom.c is unchanged because some PHYs even use a different selector
method, so let them specify it directly (e.g: SerDes secondary selector).

Fixes: a1cba5613edf ("net: phy: Add Broadcom phy library for common interfaces")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/bcm-cygnus.c
drivers/net/phy/bcm-phy-lib.h
drivers/net/phy/bcm7xxx.c