void initialize_network_hardware() {
	initDMA();

	EthernetIntRegister(ETH_BASE, EthernetISR);

	/* Enable/Reset the Ethernet Controller */
	ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
	ROM_SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

	ROM_EthernetIntDisable(ETH_BASE,
			(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX));

	/* Clear any interrupts that were already pending. */
	unsigned long temp = ROM_EthernetIntStatus(ETH_BASE, 0);
	ROM_EthernetIntClear(ETH_BASE, temp);

	/* Initialise the MAC and connect. */
	EthernetInit(ETH_BASE);
	ROM_EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN | ETH_CFG_RX_AMULEN));

	setMACAddress();

	ROM_EthernetEnable(ETH_BASE);
	ROM_IntEnable(INT_ETH);
	ROM_EthernetIntEnable(ETH_BASE, ETH_INT_RX);
}
示例#2
0
Error SMSC95xxUSB::initialize()
{
    DEBUG("");

    Error r = USBDevice::initialize();
    if (r != ESUCCESS)
    {
        ERROR("failed to initialize USBDevice");
        return r;
    }
    DEBUG("setting MAC");

    // Set MAC address
    Ethernet::Address a;
    a.addr[0] = 0x00;
    a.addr[1] = 0x11;
    a.addr[2] = 0x22;
    a.addr[3] = 0x33;
    a.addr[4] = 0x44;
    a.addr[5] = 0x55;
    setMACAddress(a);

#define SMSC9512_HS_USB_PKT_SIZE 512
#define SMSC9512_DEFAULT_HS_BURST_CAP_SIZE (16 * 1024 + 5 * SMSC9512_HS_USB_PKT_SIZE)

    // Enable RX/TX bits on hardware
    write(HardwareConfig, read(HardwareConfig) | MultipleEther | BulkIn | BCE);
    write(BurstCap, SMSC9512_DEFAULT_HS_BURST_CAP_SIZE / SMSC9512_HS_USB_PKT_SIZE);
    write(MACControl, read(MACControl) | MACTransmit | MACReceive);
    write(TransmitConfig, TransmitOn);

    // Begin packet receive transfer
    readStart();

    // Done
    return ESUCCESS;
}