6
Calls the
READ_BUS_D16
macro a second time to determine whether
the EtherLink III is attached. If the data returned by
READ_BUS_D16
is not 0x6d50, calls the
printf( )
routine to display an appropriate
message on the console terminal.
7
Returns the value 0 (zero) to indicate that the probe operation failed.
8
Performs tasks related to the ISA bus if
bus_type
evaluates to the
constant
BUS_ISA
.
9
Calls the
get_config( )
routine to obtain the base I/O address for
the device.
10
If
get_config( )
is successful, stores the base I/O address in the
reg
variable.
11
If
get_config( )
is unsuccessful, calls the
printf( )
routine to
display an appropriate message on the console terminal, then returns
the value 0 (zero) to indicate that the probe operation failed.
12
Calls the
get_config( )
routine to obtain the interrupt request (IRQ)
line for the device. If
get_config( )
is not successful,
el_probe( )
calls the
printf( )
routine to display an appropriate message on the
console terminal, then returns the value 0 (zero) to indicate that the
probe operation failed.
13
If this is the first ISA 3Com 3C5x9 adapter seen in the system, calls the
el_isa_reset_all( )
routine to reset all 3Com 3C5x9 adapters on
the ISA bus once to clear any bad state data.
14
Calls the
el_isa_activate( )
routine to attempt to activate the
lowest addressed adapter on the bus and to configure it with the given
base address. If the attempt fails,
el_probe( )
calls the
printf( )
routine to display an appropriate message on the console terminal, then
returns the value 0 (zero) to indicate that the probe operation failed. See
the
if_el
source file (in the examples directory that is installed with
the device driver kit) for a listing of the
el_isa_activate( )
routine.
15
If the driver is not operating on either the PCMCIA or ISA bus, calls
the
printf( )
routine to display an appropriate message on the console
terminal, then returns the value 0 (zero) to indicate that the probe
operation failed.
5.1.4 Allocating Memory for the softc Data Structure
The following code shows how the
el_probe( )
routine allocates memory
for the
if_el
device driver’s
softc
data structure. If the device has already
been probed, the driver does not need to allocate the data structure. This
can happen if the user removed and then reinserted the device, an operation
that is only possible for PCMCIA versions of the adapter.
5–6 Implementing the Autoconfiguration Support Section (probe)