This task is specific to the 3Com 3C5x9 device. Make sure that you perform
similar initialization tasks for the hardware device that your network driver
controls.
WRITE_CMD(sc, CMD0xff);
1
1
Calls the
WRITE_CMD
macro to write data to the command port register.
The data written to the command port register is the acknowledge
interrupt command (
CMD_ACKINT
) plus a mask that specifies that all
interrupts are to be acknowledged.
8.2.3 Starting the Device
The following code shows how the
el_init_locked( )
routine starts the
device. This task is specific to the 3Com 3C5x9 device. Make sure that
you perform similar initialization tasks for the hardware device that your
network driver controls.
WRITE_CMD(sc, CMD_WINDOW0);
i = READ_CCR(sc);
WRITE_CCR(sc, CCR_ENA | i);
1
WRITE_RCR(sc,
(sc->irq << 12) | RCR_RSV);
2
1
Calls the
WRITE_CCR
macro to write data to the 3Com 3C5x9 device’s
configuration control register. The data to be written consists of the
original register contents but with the enable adapter bit (CCR_ENA)
set.
2
Calls the
WRITE_RCR
macro to write data to the 3Com 3C5x9 device’s
resource configuration register. The data to be written is the bitwise
inclusive OR of the interrupt request (IRQ) stored in the
irq
member
of the
el_softc
data structure and the reserved bit for the resource
configuration register (
RCR_RSV
).
8.2.4 Ensuring That the 10Base2 Transceiver Is Off
The following code shows how the
el_init_locked( )
routine ensures
that the 10Base2 transceiver is off. This task is specific to the 3Com
3C5x9 device. You may want to perform similar initialization tasks for the
hardware device that your network driver controls.
WRITE_CMD(sc, CMD_STOP2);
1
DELAY(800);
2
1
Calls the
WRITE_CMD
macro to write data to the command port register.
The data to be written is the stop 10Base2 command bit (
CMD_STOP2
).
2
Calls the
DELAY
macro to wait 800 microseconds before continuing
execution.
Implementing the Initialization Section 8–5