mx6sabreauto: Make Ethernet functional again
Since commitce412b79e7
("drivers: net: phy: atheros: add separate config for AR8031") Ethernet does not work on mx6sabreauto. This commit correctly assigns ar8031_config() as the configuration function for AR8031 in the same way as done in the Linux kernel. However, on mx6sabreauto design we need some additional configurations, such as enabling the 125 MHz AR8031 output and setting the TX clock delay that need to be done in the board file. This is the equivalent fix from commit4b6035da48
("mx6sabresd: Make Ethernet functional again"). Reported-by: Miquel RAYNAL <miquel.raynal@free-electrons.com> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
This commit is contained in:
parent
bc104a7066
commit
3f0a1042bb
@ -433,6 +433,39 @@ u32 get_board_rev(void)
|
||||
return (get_cpu_rev() & ~(0xF << 8)) | rev;
|
||||
}
|
||||
|
||||
static int ar8031_phy_fixup(struct phy_device *phydev)
|
||||
{
|
||||
unsigned short val;
|
||||
|
||||
/* To enable AR8031 ouput a 125MHz clk from CLK_25M */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
|
||||
|
||||
val = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
|
||||
val &= 0xffe3;
|
||||
val |= 0x18;
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, val);
|
||||
|
||||
/* introduce tx clock delay */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x5);
|
||||
val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
|
||||
val |= 0x0100;
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_phy_config(struct phy_device *phydev)
|
||||
{
|
||||
ar8031_phy_fixup(phydev);
|
||||
|
||||
if (phydev->drv->config)
|
||||
phydev->drv->config(phydev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_VIDEO_IPUV3)
|
||||
static void disable_lvds(struct display_info_t const *dev)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user