![]() |
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 (uint16_t addr, uint16_t data) |
void | CSWritePP16 (uint16_t addr, uint16_t data) |
uint16_t | CSRead16 (uint16_t addr) |
uint16_t | CSReadPP16 (uint16_t addr) |
uint32_t | CSReadPP32 (u_int addr) |
void | CSBeginFrame (void) |
void | CSEndFrame (void) |
void | CSWriteFrameByte (uint8_t 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 (uint32_t addr, uint16_t data) |
uint16_t | CSRead16 (uint32_t addr) |
int | cs8900Output (NUTDEVICE *dev, NETBUF *nb) |
Send Ethernet packet. | |
int | cs8900Init (NUTDEVICE *dev) |
Initialize Ethernet hardware. | |
Variables | |
uint8_t | cs_flags |
volatile uint16_t | cs_base = 0x0000 |
volatile uint32_t | cs_base = 0x82000000UL |
NUTDEVICE | devCS8900A |
Device information structure. |
Definition at line 242 of file cs8900.c.
References cli, CS_PP_DATA0, CS_PP_PTR, and CSWrite16().
Referenced by cs8900Init(), and CSNicInit().
Definition at line 268 of file cs8900.c.
References cli, CS_PP_DATA0, CS_PP_PTR, and CSRead16().
Referenced by cs8900Init(), CSNicInit(), and CSNICrx().
void CSEndFrame | ( | void | ) |
void CSWriteFrameByte | ( | uint8_t | data | ) |
Send Ethernet packet.
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. |
Definition at line 416 of file cs8900.c.
References _NUTDEVICE::dev_dcb, NICINFO::ni_tx_packets, and PSTR.
void CSNICrx | ( | void * | arg | ) |
NIC receiver thread.
It runs with high priority.
Definition at line 447 of file cs8900.c.
References CS_DATA_P0, CS_RX_EVENT, CSReadPP16(), _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, ifnet::if_recv, _NETBUF::nb_dl, NBAF_DATALINK, NICINFO::ni_rx_packets, NutNetBufAlloc(), NutSleep(), NutThreadSetPriority(), PSTR, and _NBDATA::vp.
Referenced by cs8900Init(), and CSNicInit().
void CSSoftwareWakeup | ( | void | ) |
Definition at line 528 of file cs8900.c.
References CS_PP_PTR, CS_SELF_CTRL, and NutDelay().
Referenced by cs8900Init(), and CSNicInit().
void CSSoftwareReset | ( | void | ) |
Definition at line 539 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().
dev | Identifies the device to initialize. The structure must be properly set. |
Definition at line 560 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.
Send Ethernet packet.
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(). |
Definition at line 500 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.
dev | Identifies the device to initialize. |
Definition at line 537 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.
Definition at line 228 of file cs8900.c.
Referenced by CSBeginFrame(), CSEndFrame(), and CSWriteFrameByte().
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 }
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.