Esempio n. 1
0
int et131x_adapter_setup(struct et131x_adapter *etdev)
{
    int status = 0;

    /* Configure the JAGCore */
    ConfigGlobalRegs(etdev);

    ConfigMACRegs1(etdev);

    /* Configure the MMC registers */
    /* All we need to do is initialize the Memory Control Register */
    writel(ET_MMC_ENABLE, &etdev->regs->mmc.mmc_ctrl);

    ConfigRxMacRegs(etdev);
    ConfigTxMacRegs(etdev);

    ConfigRxDmaRegs(etdev);
    ConfigTxDmaRegs(etdev);

    ConfigMacStatRegs(etdev);

    /* Move the following code to Timer function?? */
    status = et131x_xcvr_find(etdev);

    if (status != 0)
        dev_warn(&etdev->pdev->dev, "Could not find the xcvr\n");

    /* Prepare the TRUEPHY library. */
    ET1310_PhyInit(etdev);

    /* Reset the phy now so changes take place */
    ET1310_PhyReset(etdev);

    /* Power down PHY */
    ET1310_PhyPowerDown(etdev, 1);

    /*
     * We need to turn off 1000 base half dulplex, the mac does not
     * support it. For the 10/100 part, turn off all gig advertisement
     */
    if (etdev->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
        ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_FULL);
    else
        ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

    /* Power up PHY */
    ET1310_PhyPowerDown(etdev, 0);

    et131x_setphy_normal(etdev);
    ;
    return status;
}
Esempio n. 2
0
void TPAL_SetPhyAutoNeg(struct et131x_adapter *etdev)
{
	
	ET1310_PhyPowerDown(etdev, 1);

	
	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_BOTH);

	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_BOTH);

	if (etdev->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
		ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_FULL);
	else
		ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	
	ET1310_PhyAutoNeg(etdev, true);

	
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 3
0
/**
 * TPAL_SetPhyAutoNeg - Set phy to autonegotiation mode.
 * @etdev: pointer to the adapter structure
 */
void TPAL_SetPhyAutoNeg(struct et131x_adapter *etdev)
{
	/* Power down PHY */
	ET1310_PhyPowerDown(etdev, 1);

	/* Turn on advertisement of all capabilities */
	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_BOTH);

	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_BOTH);

	if (etdev->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
		ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_FULL);
	else
		ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	/* Make sure auto-neg is ON (it is disabled in FORCE modes) */
	ET1310_PhyAutoNeg(etdev, true);

	/* Power up PHY */
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 4
0
void TPAL_SetPhy1000FullDuplex(struct et131x_adapter *etdev)
{
	
	ET1310_PhyPowerDown(etdev, 1);

	
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_FULL);

	
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 5
0
/**
 * TPAL_SetPhy1000FullDuplex - Force 1000 Base T Full Duplex mode
 * @etdev: pointer to the adapter structure
 *
 * Also sets the MAC so it is syncd up properly.
 */
void TPAL_SetPhy1000FullDuplex(struct et131x_adapter *etdev)
{
	/* Power down PHY */
	ET1310_PhyPowerDown(etdev, 1);

	/* first we need to turn off all other advertisement */
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	/* set our advertise values accordingly */
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_FULL);

	/* power up PHY */
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 6
0
void TPAL_SetPhy100HalfDuplex(struct et131x_adapter *etdev)
{
	
	ET1310_PhyPowerDown(etdev, 1);

	
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_HALF);

	
	ET1310_PhySpeedSelect(etdev, TRUEPHY_SPEED_100MBPS);

	
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 7
0
/**
 * TPAL_SetPhy100HalfDuplex - Force 100 Base T Half Duplex mode.
 * @etdev: pointer to the adapter structure
 *
 * Also sets the MAC so it is syncd up properly.
 */
void TPAL_SetPhy100HalfDuplex(struct et131x_adapter *etdev)
{
	/* Power down PHY */
	ET1310_PhyPowerDown(etdev, 1);

	/* first we need to turn off all other advertisement */
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	/* Set our advertise values accordingly */
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_HALF);

	/* Set speed */
	ET1310_PhySpeedSelect(etdev, TRUEPHY_SPEED_100MBPS);

	/* Power up PHY */
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 8
0
void TPAL_SetPhy100Force(struct et131x_adapter *etdev)
{
	
	ET1310_PhyPowerDown(etdev, 1);

	
	ET1310_PhyAutoNeg(etdev, false);

	
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);
	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	
	ET1310_PhySpeedSelect(etdev, TRUEPHY_SPEED_100MBPS);

	
	ET1310_PhyDuplexMode(etdev, TRUEPHY_DUPLEX_FULL);

	
	ET1310_PhyPowerDown(etdev, 0);
}
Esempio n. 9
0
/**
 * TPAL_SetPhy100Force - Force 100 BaseT FD mode WITHOUT using autonegotiation
 * @etdev: pointer to the adapter structure
 */
void TPAL_SetPhy100Force(struct et131x_adapter *etdev)
{
	/* Power down PHY */
	ET1310_PhyPowerDown(etdev, 1);

	/* Disable autoneg */
	ET1310_PhyAutoNeg(etdev, false);

	/* Disable all advertisement */
	ET1310_PhyAdvertise1000BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);
	ET1310_PhyAdvertise10BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);
	ET1310_PhyAdvertise100BaseT(etdev, TRUEPHY_ADV_DUPLEX_NONE);

	/* Force 100 Mbps */
	ET1310_PhySpeedSelect(etdev, TRUEPHY_SPEED_100MBPS);

	/* Force Full duplex */
	ET1310_PhyDuplexMode(etdev, TRUEPHY_DUPLEX_FULL);

	/* Power up PHY */
	ET1310_PhyPowerDown(etdev, 0);
}