Crystal CS8900A
[Ethernet]

Collaboration diagram for Crystal CS8900A:

Detailed Description

10 MBit Ethernet controller.

The device driver for the CS8900A is poorly supported. Be prepared that some debugging may be required when using it with the latest Nut/Net release.


Data Structures

struct  _NICINFO
 Network interface controller information structure. More...

Typedefs

typedef struct _NICINFO NICINFO
 Network interface controller information type.

Functions

void CSWrite16 (u_short addr, u_short data)
void CSWritePP16 (u_short addr, u_short data)
u_short CSRead16 (u_short addr)
u_short CSReadPP16 (u_short addr)
u_long CSReadPP32 (u_int addr)
void CSBeginFrame (void)
void CSEndFrame (void)
void CSWriteFrameByte (u_char data)
int CSNicOutput (NUTDEVICE *dev, NETBUF *nb)
 Send Ethernet packet.
void CSNICrx (void *arg)
 NIC receiver thread.
void CSSoftwareWakeup (void)
void CSSoftwareReset (void)
int CSNicInit (NUTDEVICE *dev)
 Initialize Ethernet Interface.
void CSWrite16 (u_long addr, u_short data)
u_short CSRead16 (u_long addr)
int cs8900Output (NUTDEVICE *dev, NETBUF *nb)
 Send Ethernet packet.
int cs8900Init (NUTDEVICE *dev)
 Initialize Ethernet hardware.

Variables

u_char cs_flags
volatile u_short cs_base = 0x0000
volatile u_long cs_base = 0x82000000UL
NUTDEVICE devCS8900A
 Device information structure.


Typedef Documentation

typedef struct _NICINFO NICINFO

Network interface controller information type.

Definition at line 206 of file cs8900a.c.


Function Documentation

void CSWrite16 ( u_short  addr,
u_short  data 
)

Definition at line 229 of file cs8900.c.

References cli, and sei.

Referenced by CSWritePP16().

void CSWritePP16 ( u_short  addr,
u_short  data 
)

Definition at line 239 of file cs8900.c.

References cli, CS_PP_DATA0, CS_PP_PTR, and CSWrite16().

Referenced by cs8900Init(), and CSNicInit().

u_short CSRead16 ( u_short  addr  ) 

Definition at line 252 of file cs8900.c.

References cli, and sei.

Referenced by CSReadPP16().

u_short CSReadPP16 ( u_short  addr  ) 

Definition at line 265 of file cs8900.c.

References cli, CS_PP_DATA0, CS_PP_PTR, and CSRead16().

Referenced by cs8900Init(), CSNicInit(), and CSNICrx().

u_long CSReadPP32 ( u_int  addr  ) 

Definition at line 276 of file cs8900.c.

References cli, CS_PP_DATA0, CS_PP_PTR, and sei.

void CSBeginFrame ( void   ) 

Definition at line 293 of file cs8900.c.

References cs_flags.

void CSEndFrame ( void   ) 

Definition at line 298 of file cs8900.c.

References cli, CS_DATA_P0, cs_flags, and sei.

void CSWriteFrameByte ( u_char  data  ) 

Definition at line 311 of file cs8900.c.

References CS_DATA_P0, and cs_flags.

int CSNicOutput ( NUTDEVICE dev,
NETBUF nb 
)

Send Ethernet packet.

Parameters:
dev Identifies the device to use.
nb Network buffer structure containing the packet to be sent. The structure must have been allocated by a previous call NutNetBufAlloc(). This buffer will be automatically released in case of an error.
Returns:
0 on success, -1 in case of any errors. Errors will automatically release the network buffer structure.

Definition at line 413 of file cs8900.c.

References _NUTDEVICE::dev_dcb, NICINFO::ni_tx_packets, and PSTR.

void CSNICrx ( void *  arg  ) 

void CSSoftwareWakeup ( void   ) 

Definition at line 525 of file cs8900.c.

References CS_PP_PTR, CS_SELF_CTRL, and NutDelay().

Referenced by cs8900Init(), and CSNicInit().

void CSSoftwareReset ( void   ) 

Definition at line 536 of file cs8900.c.

References CS_DATA_P0, CS_PP_PTR, and CS_SELF_CTRL.

Referenced by cs8900Init(), and CSNicInit().

int CSNicInit ( NUTDEVICE dev  ) 

Initialize Ethernet Interface.

Applications typically do not use this function, but call NutNetIfConfig().

Parameters:
dev Identifies the device to initialize. The structure must be properly set.

Definition at line 557 of file cs8900.c.

References _CONFNET::cd_size, _CONFNET::cdn_mac, confnet, cs_base, CS_IEEE_ADDR, CS_LINE_CTRL, CS_PROD_ID, CS_RX_CTL, CSNICrx(), CSReadPP16(), CSSoftwareReset(), CSSoftwareWakeup(), CSWritePP16(), _NUTDEVICE::dev_base, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, _NUTDEVICE::dev_name, ifnet::if_mac, inp, memcpy(), memset(), NutDelay(), NutNetLoadConfig(), NutThreadCreate(), outp, PSTR, and RESETE.

void CSWrite16 ( u_long  addr,
u_short  data 
)

Definition at line 220 of file cs8900a.c.

References cli, and sei.

u_short CSRead16 ( u_long  addr  ) 

Definition at line 247 of file cs8900a.c.

References cli, and sei.

int cs8900Output ( NUTDEVICE dev,
NETBUF nb 
)

Send Ethernet packet.

Parameters:
dev Identifies the device to use.
nb Network buffer structure containing the packet to be sent. The structure must have been allocated by a previous call NutNetBufAlloc().
Returns:
0 on success, -1 in case of any errors.

Definition at line 497 of file cs8900a.c.

References _NUTDEVICE::dev_dcb, NICINFO::ni_tx_packets, and PSTR.

int cs8900Init ( NUTDEVICE dev  ) 

Initialize Ethernet hardware.

Resets the CS8900 Ethernet controller, initializes all required hardware registers and starts a background thread for incoming Ethernet traffic.

Applications should do not directly call this function. It is automatically executed during during device registration by NutRegisterDevice().

If the network configuration hasn't been set by the application before registering the specified device, this function will call NutNetLoadConfig() to get the MAC address.

Parameters:
dev Identifies the device to initialize.

Definition at line 534 of file cs8900a.c.

References _CONFNET::cd_size, _CONFNET::cdn_mac, confnet, cs_base, CS_IEEE_ADDR, CS_LINE_CTRL, CS_PROD_ID, CS_RX_CTL, CSNICrx(), CSReadPP16(), CSSoftwareReset(), CSSoftwareWakeup(), CSWritePP16(), _NUTDEVICE::dev_base, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, _NUTDEVICE::dev_name, ifnet::if_mac, memcpy(), memset(), NutDelay(), NutNetLoadConfig(), NutThreadCreate(), and PSTR.


Variable Documentation

Definition at line 225 of file cs8900.c.

Referenced by CSBeginFrame(), CSEndFrame(), and CSWriteFrameByte().

volatile u_short cs_base = 0x0000

Definition at line 226 of file cs8900.c.

Referenced by cs8900Init(), and CSNicInit().

volatile u_long cs_base = 0x82000000UL

Definition at line 214 of file cs8900a.c.

Initial value:

 {
    0,                          
    {'e', 't', 'h', '0', 0, 0, 0, 0, 0},        
    IFTYP_NET,                  
    0,                          
    0,                          
    &ifn_eth0,                  
    &dcb_eth0,                  
    cs8900Init,                 
    0,                          
    0,                          
    0,                          
    0,                          
    0,                          
    0                           
}
Device information structure.

A pointer to this structure must be passed to NutRegisterDevice() to bind this Ethernet device driver to the Nut/OS kernel. An application may then call NutNetIfConfig() with the name eth0 of this driver to initialize the network interface.

Definition at line 651 of file cs8900a.c.


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/