ath79: ag71xx: Explicitly register mdio bus after ag71xx_hw_init() for ar7240
mdio bus isn't a standalone device on ar7240. (and maybe older SoCs?) Use simple-mfd for ar7241 and later SoCs to get mdio1 ready before gmac0 For ar7240 and older chips, manually create platform device after ag71xx_hw_init() in ag71xx_probe()to get mdio0 ready between ag71xx_hw_init() and ag71xx_phy_connect(). Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
parent
85189e4c00
commit
f43e8f9004
1 changed files with 8 additions and 0 deletions
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
#include <linux/of_net.h>
|
#include <linux/of_net.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
|
#include <linux/of_platform.h>
|
||||||
#include "ag71xx.h"
|
#include "ag71xx.h"
|
||||||
|
|
||||||
#define AG71XX_DEFAULT_MSG_ENABLE \
|
#define AG71XX_DEFAULT_MSG_ENABLE \
|
||||||
|
@ -1273,6 +1274,7 @@ static const char *ag71xx_get_phy_if_mode_name(phy_interface_t mode)
|
||||||
static int ag71xx_probe(struct platform_device *pdev)
|
static int ag71xx_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device_node *np = pdev->dev.of_node;
|
struct device_node *np = pdev->dev.of_node;
|
||||||
|
struct device_node *mdio_node;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
struct ag71xx *ag;
|
struct ag71xx *ag;
|
||||||
|
@ -1439,6 +1441,12 @@ static int ag71xx_probe(struct platform_device *pdev)
|
||||||
ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, 0);
|
ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, 0);
|
||||||
ag71xx_hw_init(ag);
|
ag71xx_hw_init(ag);
|
||||||
|
|
||||||
|
if(!of_device_is_compatible(np, "simple-mfd")) {
|
||||||
|
mdio_node = of_get_child_by_name(np, "mdio-bus");
|
||||||
|
if(!IS_ERR(mdio_node))
|
||||||
|
of_platform_device_create(mdio_node, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
err = ag71xx_phy_connect(ag);
|
err = ag71xx_phy_connect(ag);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_free;
|
goto err_free;
|
||||||
|
|
Loading…
Reference in a new issue