Beispiel #1
0
static void
ramips_eth_uninit(struct net_device *dev)
{
    struct raeth_priv *re = netdev_priv(dev);

    ramips_phy_disconnect(re);
    ramips_mdio_cleanup(re);
}
Beispiel #2
0
static void
ramips_eth_uninit(struct net_device *dev)
{
	struct raeth_priv *re = netdev_priv(dev);

	raeth_debugfs_exit(re);
	ramips_phy_disconnect(re);
	ramips_mdio_cleanup(re);
	ramips_fe_twr(0, RAETH_REG_FE_INT_ENABLE);
	free_irq(dev->irq, dev);
	tasklet_kill(&re->tx_housekeeping_tasklet);
	tasklet_kill(&re->rx_tasklet);
	ramips_ring_cleanup(re);
	ramips_ring_free(re);
}
Beispiel #3
0
static int __init
ramips_eth_probe(struct net_device *dev)
{
	struct raeth_priv *re = netdev_priv(dev);
	int err;

	BUG_ON(!re->plat->reset_fe);
	re->plat->reset_fe();
	net_srandom(jiffies);
	memcpy(dev->dev_addr, re->plat->mac, ETH_ALEN);

	ether_setup(dev);
	dev->mtu = 1500;
	dev->watchdog_timeo = TX_TIMEOUT;
	spin_lock_init(&re->page_lock);
	spin_lock_init(&re->phy_lock);

	err = ramips_mdio_init(re);
	if (err)
		return err;

	err = ramips_phy_connect(re);
	if (err)
		goto err_mdio_cleanup;

	err = raeth_debugfs_init(re);
	if (err)
		goto err_phy_disconnect;

	err = ramips_eth_hw_init(dev);
	if (err)
		goto err_debugfs;

	return 0;

err_debugfs:
	raeth_debugfs_exit(re);
err_phy_disconnect:
	ramips_phy_disconnect(re);
err_mdio_cleanup:
	ramips_mdio_cleanup(re);
	return err;
}