Exemplo n.º 1
0
static int xgene_enet_reset(struct xgene_enet_pdata *pdata)
{
	struct device *dev = &pdata->pdev->dev;

	if (!xgene_ring_mgr_init(pdata))
		return -ENODEV;

	if (dev->of_node) {
		clk_prepare_enable(pdata->clk);
		udelay(5);
		clk_disable_unprepare(pdata->clk);
		udelay(5);
		clk_prepare_enable(pdata->clk);
		udelay(5);
	} else {
#ifdef CONFIG_ACPI
		if (acpi_has_method(ACPI_HANDLE(&pdata->pdev->dev), "_RST")) {
			acpi_evaluate_object(ACPI_HANDLE(&pdata->pdev->dev),
					     "_RST", NULL, NULL);
		} else if (acpi_has_method(ACPI_HANDLE(&pdata->pdev->dev),
					   "_INI")) {
			acpi_evaluate_object(ACPI_HANDLE(&pdata->pdev->dev),
					     "_INI", NULL, NULL);
		}
#endif
	}

	xgene_enet_ecc_init(pdata);
	xgene_enet_config_ring_if_assoc(pdata);

	return 0;
}
Exemplo n.º 2
0
static int xgene_mdio_reset(struct xgene_mdio_pdata *pdata)
{
	int ret;

	if (pdata->dev->of_node) {
		clk_prepare_enable(pdata->clk);
		udelay(5);
		clk_disable_unprepare(pdata->clk);
		udelay(5);
		clk_prepare_enable(pdata->clk);
		udelay(5);
	} else {
#ifdef CONFIG_ACPI
		acpi_evaluate_object(ACPI_HANDLE(pdata->dev),
				     "_RST", NULL, NULL);
#endif
	}

	ret = xgene_enet_ecc_init(pdata);
	if (ret) {
		if (pdata->dev->of_node)
			clk_disable_unprepare(pdata->clk);
		return ret;
	}
	xgene_gmac_reset(pdata);

	return 0;
}
static void xgene_enet_clkrst_cfg(struct xgene_enet_priv *priv)
{
	u32 data;

	/* disable all clocks */
	data = CSR0_CLKEN_WR(0) | ENET0_CLKEN_WR(0) |
	    CSR1_CLKEN_WR(0) | ENET1_CLKEN_WR(0);
	xgene_enet_wr(priv, BLOCK_ETH_CLKRST_CSR, ENET_CLKEN_ADDR, data);

	/* enable all clocks */
	data = CSR0_CLKEN_WR(1) | ENET0_CLKEN_WR(1) |
	    CSR1_CLKEN_WR(1) | ENET1_CLKEN_WR(1);
	xgene_enet_wr(priv, BLOCK_ETH_CLKRST_CSR, ENET_CLKEN_ADDR, data);

	/* put csr and core reset */
	data = CSR0_RESET_WR(1) | ENET0_RESET_WR(1) |
	    CSR1_RESET_WR(1) | ENET1_RESET_WR(1);
	xgene_enet_wr(priv, BLOCK_ETH_CLKRST_CSR, ENET_SRST_ADDR, data);

	/* release csr and core reset */
	data = CSR0_RESET_WR(0) | ENET0_RESET_WR(0) |
	    CSR1_RESET_WR(0) | ENET1_RESET_WR(0);
	xgene_enet_wr(priv, BLOCK_ETH_CLKRST_CSR, ENET_SRST_ADDR, data);

	xgene_enet_ecc_init(priv);
}
Exemplo n.º 4
0
static void xgene_enet_reset(struct xgene_enet_pdata *p)
{
	clk_prepare_enable(p->clk);
	clk_disable_unprepare(p->clk);
	clk_prepare_enable(p->clk);

	xgene_enet_ecc_init(p);
	xgene_enet_config_ring_if_assoc(p);
}
Exemplo n.º 5
0
static int xgene_enet_reset(struct xgene_enet_pdata *p)
{
	if (!xgene_ring_mgr_init(p))
		return -ENODEV;

	clk_prepare_enable(p->clk);
	clk_disable_unprepare(p->clk);
	clk_prepare_enable(p->clk);

	xgene_enet_ecc_init(p);
	xgene_enet_config_ring_if_assoc(p);

	return 0;
}