Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ether1.c File Reference

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/interrupt.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
#include <linux/malloc.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/ecard.h>
#include "ether1.h"

Include dependency graph for ether1.c:

Go to the source code of this file.

Defines

#define __ETHER1_C
#define BUFFER_SIZE   0x10000
#define TX_AREA_START   0x00100
#define TX_AREA_END   0x05000
#define RX_AREA_START   0x05000
#define RX_AREA_END   0x0fc00
#define tx_done(dev)   0
#define BUS_16   16
#define BUS_8   8
#define DISABLEIRQS   1
#define NORMALIRQS   0
#define ether1_inw(dev, addr, type, offset, svflgs)   ether1_inw_p (dev, addr + (int)(&((type *)0)->offset), svflgs)
#define ether1_outw(dev, val, addr, type, offset, svflgs)   ether1_outw_p (dev, val, addr + (int)(&((type *)0)->offset), svflgs)
#define NOP_ADDR   (TX_AREA_START)
#define NOP_SIZE   (0x06)
#define TDR_ADDR   (0x003a)
#define TDR_SIZE   (0x08)
#define MC_ADDR   (0x002e)
#define MC_SIZE   (0x0c)
#define SA_ADDR   (0x0022)
#define SA_SIZE   (0x0c)
#define CFG_ADDR   (0x0010)
#define CFG_SIZE   (0x12)
#define SCB_ADDR   (0x0000)
#define SCB_SIZE   (0x10)
#define ISCP_ADDR   (0xffee)
#define ISCP_SIZE   (0x08)
#define SCP_ADDR   (0xfff6)
#define SCP_SIZE   (0x0a)
#define RFD_SIZE   (0x16)
#define RBD_SIZE   (0x0a)
#define TX_SIZE   (0x08)
#define TBD_SIZE   (0x08)

Functions

static unsigned short ether1_inw_p (struct device *dev, int addr, int svflgs)
static void ether1_outw_p (struct device *dev, unsigned short val, int addr, int svflgs)
static void * ether1_inswb (unsigned int addr, void *data, unsigned int len)
static void * ether1_outswb (unsigned int addr, void *data, unsigned int len)
static void ether1_writebuffer (struct device *dev, void *data, unsigned int start, unsigned int length)
static void ether1_readbuffer (struct device *dev, void *data, unsigned int start, unsigned int length)
 __initfunc (static int ether1_ramtest(struct device *dev, unsigned char byte))
static int ether1_reset (struct device *dev)
 __initfunc (static int ether1_init_2(struct device *dev))
static int ether1_init_for_open (struct device *dev)
 __initfunc (static void ether1_addr(struct device *dev))
 __initfunc (int ether1_probe(struct device *dev))
static int ether1_txalloc (struct device *dev, int size)
static void ether1_restart (struct device *dev, char *reason)
static int ether1_open (struct device *dev)
static int ether1_sendpacket (struct sk_buff *skb, struct device *dev)
static void ether1_xmit_done (struct device *dev)
static void ether1_recv_done (struct device *dev)
static void ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs)
static int ether1_close (struct device *dev)
static struct enet_statistics * ether1_getstats (struct device *dev)
static void ether1_setmulticastlist (struct device *dev)

Variables

static unsigned int net_debug = NET_DEBUG
static char * version = "ether1 ethernet driver (c) 1995 Russell King v1.05\n"
static const card_ids __init ether1_cids []
static nop_t init_nop
static tdr_t init_tdr
static mc_t init_mc
static sa_t init_sa
static cfg_t init_cfg
static scb_t init_scb
static iscp_t init_iscp
static scp_t init_scp
static rfd_t init_rfd
static rbd_t init_rbd


Define Documentation

#define __ETHER1_C
 

Definition at line 56 of file ether1.c.

#define BUFFER_SIZE   0x10000
 

Definition at line 61 of file ether1.c.

Referenced by __initfunc(), acceptb(), answer(), do_format(), fd_writetrack(), mac_init(), mac_make_spframes(), rcvpkt(), sc_init(), setup_buffers(), sktr_init_opb(), and sndpkt().

#define BUS_16   16
 

Definition at line 71 of file ether1.c.

Referenced by ether1_reset().

#define BUS_8   8
 

Definition at line 72 of file ether1.c.

#define CFG_ADDR   (0x0010)
 

Definition at line 375 of file ether1.c.

Referenced by ether1_init_for_open().

#define CFG_SIZE   (0x12)
 

Definition at line 376 of file ether1.c.

Referenced by ether1_init_for_open().

#define DISABLEIRQS   1
 

Definition at line 81 of file ether1.c.

Referenced by ether1_init_for_open().

#define ether1_inw dev,
addr,
type,
offset,
svflgs   )     ether1_inw_p (dev, addr + (int)(&((type *)0)->offset), svflgs)
 

Definition at line 84 of file ether1.c.

Referenced by ether1_init_for_open(), ether1_interrupt(), ether1_recv_done(), and ether1_xmit_done().

#define ether1_outw dev,
val,
addr,
type,
offset,
svflgs   )     ether1_outw_p (dev, val, addr + (int)(&((type *)0)->offset), svflgs)
 

Definition at line 85 of file ether1.c.

Referenced by ether1_interrupt(), ether1_recv_done(), ether1_sendpacket(), and ether1_xmit_done().

#define ISCP_ADDR   (0xffee)
 

Definition at line 407 of file ether1.c.

Referenced by ether1_init_for_open().

#define ISCP_SIZE   (0x08)
 

Definition at line 408 of file ether1.c.

Referenced by ether1_init_for_open().

#define MC_ADDR   (0x002e)
 

Definition at line 354 of file ether1.c.

Referenced by ether1_init_for_open().

#define MC_SIZE   (0x0c)
 

Definition at line 355 of file ether1.c.

Referenced by ether1_init_for_open().

#define NOP_ADDR   (TX_AREA_START)
 

Definition at line 335 of file ether1.c.

#define NOP_SIZE   (0x06)
 

Definition at line 336 of file ether1.c.

Referenced by ether1_init_for_open(), ether1_sendpacket(), and ether1_xmit_done().

#define NORMALIRQS   0
 

Definition at line 82 of file ether1.c.

Referenced by ether1_init_for_open(), ether1_interrupt(), ether1_recv_done(), ether1_sendpacket(), and ether1_xmit_done().

#define RBD_SIZE   (0x0a)
 

Definition at line 437 of file ether1.c.

Referenced by ether1_init_for_open(), ether1_recv_done(), and wv_ru_start().

#define RFD_SIZE   (0x16)
 

Definition at line 426 of file ether1.c.

Referenced by ether1_init_for_open().

#define RX_AREA_END   0x0fc00
 

Definition at line 65 of file ether1.c.

Referenced by ether1_init_for_open().

#define RX_AREA_START   0x05000
 

Definition at line 64 of file ether1.c.

Referenced by ether1_init_for_open().

#define SA_ADDR   (0x0022)
 

Definition at line 365 of file ether1.c.

Referenced by ether1_init_for_open().

#define SA_SIZE   (0x0c)
 

Definition at line 366 of file ether1.c.

Referenced by ether1_init_for_open().

#define SCB_ADDR   (0x0000)
 

Definition at line 393 of file ether1.c.

Referenced by ether1_init_for_open(), ether1_interrupt(), and ether1_xmit_done().

#define SCB_SIZE   (0x10)
 

Definition at line 394 of file ether1.c.

Referenced by ether1_init_for_open().

#define SCP_ADDR   (0xfff6)
 

Definition at line 417 of file ether1.c.

Referenced by ether1_init_for_open().

#define SCP_SIZE   (0x0a)
 

Definition at line 418 of file ether1.c.

Referenced by ether1_init_for_open().

#define TBD_SIZE   (0x08)
 

Definition at line 447 of file ether1.c.

Referenced by ether1_sendpacket(), and ether1_xmit_done().

#define TDR_ADDR   (0x003a)
 

Definition at line 344 of file ether1.c.

Referenced by ether1_init_for_open().

#define TDR_SIZE   (0x08)
 

Definition at line 345 of file ether1.c.

Referenced by ether1_init_for_open().

#define TX_AREA_END   0x05000
 

Definition at line 63 of file ether1.c.

Referenced by ether1_txalloc().

#define TX_AREA_START   0x00100
 

Definition at line 62 of file ether1.c.

Referenced by ether1_txalloc().

#define tx_done dev   )     0
 

Definition at line 67 of file ether1.c.

Referenced by if_send(), net_send_packet(), ni5010_send_packet(), seeq8005_send_packet(), skmca_tx(), and smc_send_packet().

#define TX_SIZE   (0x08)
 

Definition at line 446 of file ether1.c.

Referenced by ether1_sendpacket(), ether1_xmit_done(), and isicom_tx().


Function Documentation

__initfunc int   mac_nubus_sonic_probe(struct device *dev)  ) 
 

Definition at line 676 of file ether1.c.

References ec, ecard_address(), ecard_claim, ECARD_FAST, ecard_find(), ECARD_IOC, ecard_startfind(), ENODEV, ether1_cids, and NULL.

Here is the call graph for this function:

__initfunc static void   ether1_addr(struct device *dev)  ) 
 

Definition at line 667 of file ether1.c.

References inb.

__initfunc static int   sktr_init_card(struct device *dev)  ) 
 

Definition at line 311 of file ether1.c.

References ENODEV, and i.

__initfunc static int   ether1_ramtest(struct device *dev, unsigned char byte)  ) 
 

Definition at line 257 of file ether1.c.

References BUFFER_SIZE, ENODEV, ether1_readbuffer(), ether1_writebuffer(), i, KERN_CRIT, kfree(), kmalloc(), memset, printk, ret, and xff.

Here is the call graph for this function:

static int ether1_close struct device *  dev  )  [static]
 

Definition at line 1075 of file ether1.c.

References ether1_reset(), free_irq(), and MOD_DEC_USE_COUNT.

Here is the call graph for this function:

static struct enet_statistics* ether1_getstats struct device *  dev  )  [static]
 

Definition at line 1090 of file ether1.c.

static int ether1_init_for_open struct device *  dev  )  [static]
 

Definition at line 450 of file ether1.c.

References addr, CFG_ADDR, CFG_SIZE, DISABLEIRQS, ETH_FRAME_LEN, ether1_inw, ether1_reset(), ether1_writebuffer(), HZ, i, ISCP_ADDR, ISCP_SIZE, jiffies, KERN_DEBUG, KERN_ERR, KERN_WARNING, MC_ADDR, MC_SIZE, next, NOP_SIZE, NORMALIRQS, outb, printk, rbd_t::rbd_bufl, RBD_SIZE, RFD_SIZE, RX_AREA_END, RX_AREA_START, SA_ADDR, SA_SIZE, SCB_ADDR, scb_command(), SCB_SIZE, scb_status(), SCP_ADDR, SCP_SIZE, STAT_OK, status, TDR_ADDR, TDR_OPEN, TDR_SHORT, TDR_SIZE, TDR_TIME, and time_after.

Referenced by ether1_open(), and ether1_restart().

Here is the call graph for this function:

static void* ether1_inswb unsigned int  addr,
void *  data,
unsigned int  len
[inline, static]
 

Definition at line 127 of file ether1.c.

References __asm__(), ioaddr, and used.

Referenced by ether1_readbuffer().

Here is the call graph for this function:

static void ether1_interrupt int  irq,
void *  dev_id,
struct pt_regs regs
[static]
 

Definition at line 1023 of file ether1.c.

References device, ether1_inw, ether1_outw, ether1_recv_done(), ether1_xmit_done(), KERN_WARNING, NORMALIRQS, outb, printk, SCB_ADDR, scb_command(), scb_status(), and status.

Referenced by ether1_open().

Here is the call graph for this function:

static unsigned short ether1_inw_p struct device *  dev,
int  addr,
int  svflgs
[inline, static]
 

Definition at line 88 of file ether1.c.

References inw, outb, restore_flags, ret, and save_flags_cli.

static int ether1_open struct device *  dev  )  [static]
 

Definition at line 755 of file ether1.c.

References EAGAIN, enet_statistics, ether1_init_for_open(), ether1_interrupt(), free_irq(), memset, MOD_DEC_USE_COUNT, MOD_INC_USE_COUNT, and request_irq().

Here is the call graph for this function:

static void* ether1_outswb unsigned int  addr,
void *  data,
unsigned int  len
[inline, static]
 

Definition at line 170 of file ether1.c.

References __asm__(), ioaddr, and used.

Referenced by ether1_writebuffer().

Here is the call graph for this function:

static void ether1_outw_p struct device *  dev,
unsigned short  val,
int  addr,
int  svflgs
[inline, static]
 

Definition at line 104 of file ether1.c.

References outb, outw, restore_flags, and save_flags_cli.

static void ether1_readbuffer struct device *  dev,
void *  data,
unsigned int  start,
unsigned int  length
[static]
 

Definition at line 236 of file ether1.c.

References ether1_inswb(), offset, outb, and page.

Referenced by __initfunc(), ether1_recv_done(), and ether1_xmit_done().

Here is the call graph for this function:

static void ether1_recv_done struct device *  dev  )  [static]
 

Definition at line 968 of file ether1.c.

References sk_buff::dev, eth_type_trans(), ether1_inw, ether1_outw, ether1_readbuffer(), KERN_ERR, KERN_WARNING, length(), netif_rx(), NORMALIRQS, printk, rbd_t::rbd_bufl, RBD_EOF, RBD_SIZE, rbd_t::rbd_status, and status.

Referenced by ether1_interrupt().

Here is the call graph for this function:

static int ether1_reset struct device *  dev  )  [static]
 

Definition at line 305 of file ether1.c.

References BUS_16, and outb.

Referenced by ether1_close(), ether1_init_for_open(), and ether1_restart().

static void ether1_restart struct device *  dev,
char *  reason
[static]
 

Definition at line 731 of file ether1.c.

References ether1_init_for_open(), ether1_reset(), KERN_ERR, KERN_WARNING, and printk.

Referenced by ether1_sendpacket().

Here is the call graph for this function:

static int ether1_sendpacket struct sk_buff skb,
struct device *  dev
[static]
 

Definition at line 780 of file ether1.c.

References CMD_INTR, CMD_NOP, sk_buff::data, dev_kfree_skb, ETH_FRAME_LEN, ETH_ZLEN, ether1_outw, ether1_restart(), ether1_txalloc(), ether1_writebuffer(), jiffies, KERN_WARNING, sk_buff::len, len, nop, NOP_SIZE, NORMALIRQS, NULL, printk, restore_flags, save_flags_cli, tbd_t::tbd_bufh, tbd_t::tbd_bufl, TBD_SIZE, test_and_set_bit, tmp, tx, and TX_SIZE.

Here is the call graph for this function:

static void ether1_setmulticastlist struct device *  dev  )  [static]
 

Definition at line 1104 of file ether1.c.

static int ether1_txalloc struct device *  dev,
int  size
[static]
 

Definition at line 705 of file ether1.c.

References start, tail, TX_AREA_END, and TX_AREA_START.

Referenced by ether1_sendpacket(), and ether1_xmit_done().

static void ether1_writebuffer struct device *  dev,
void *  data,
unsigned int  start,
unsigned int  length
[static]
 

Definition at line 214 of file ether1.c.

References ether1_outswb(), offset, outb, and page.

Referenced by __initfunc(), ether1_init_for_open(), and ether1_sendpacket().

Here is the call graph for this function:

static void ether1_xmit_done struct device *  dev  )  [static]
 

Definition at line 865 of file ether1.c.

References again, CMD_NOP, CMD_TDR, ETH_FRAME_LEN, ether1_inw, ether1_outw, ether1_readbuffer(), ether1_txalloc(), KERN_ERR, KERN_WARNING, mark_bh, NET_BH, nop, NOP_SIZE, NORMALIRQS, outb, printk, SCB_ADDR, scb_command(), STAT_OK, TBD_SIZE, and TX_SIZE.

Referenced by ether1_interrupt().

Here is the call graph for this function:


Variable Documentation

const card_ids __init ether1_cids[] [static]
 

Initial value:

 {
        { MANU_ACORN, PROD_ACORN_ETHER1 },
        { 0xffff, 0xffff }
}

Definition at line 74 of file ether1.c.

Referenced by __initfunc().

cfg_t init_cfg [static]
 

Initial value:

 {
        0,
        CMD_CONFIG,
        SA_ADDR,
        8,
        8,
        CFG8_SRDY,
        CFG9_PREAMB8 | CFG9_ADDRLENBUF | CFG9_ADDRLEN(6),
        0,
        0x60,
        0,
        CFG13_RETRY(15) | CFG13_SLOTH(2),
        0,
}

Definition at line 377 of file ether1.c.

iscp_t init_iscp [static]
 

Initial value:

 {
        1,
        SCB_ADDR,
        0x0000,
        0x0000
}

Definition at line 409 of file ether1.c.

mc_t init_mc [static]
 

Initial value:

 {
        0,
        CMD_SETMULTICAST,
        TDR_ADDR,
        0,
        { { 0, } }
}

Definition at line 356 of file ether1.c.

nop_t init_nop [static]
 

Initial value:

 {
        0,
        CMD_NOP,
        NOP_ADDR
}

Definition at line 337 of file ether1.c.

rbd_t init_rbd [static]
 

Initial value:

 {
        0,
        0,
        0,
        0,
        ETH_FRAME_LEN + 8
}

Definition at line 438 of file ether1.c.

rfd_t init_rfd [static]
 

Initial value:

 {
        0,
        0,
        0,
        0,
        { 0, },
        { 0, },
        0
}

Definition at line 427 of file ether1.c.

sa_t init_sa [static]
 

Initial value:

 {
        0,
        CMD_SETADDRESS,
        MC_ADDR,
        { 0, }
}

Definition at line 367 of file ether1.c.

scb_t init_scb [static]
 

Initial value:

 {
        0,
        SCB_CMDACKRNR | SCB_CMDACKCNA | SCB_CMDACKFR | SCB_CMDACKCX,
        CFG_ADDR,
        RX_AREA_START,
        0,
        0,
        0,
        0
}

Definition at line 395 of file ether1.c.

scp_t init_scp [static]
 

Initial value:

 {
        SCP_SY_16BBUS,
        { 0, 0 },
        ISCP_ADDR,
        0
}

Definition at line 419 of file ether1.c.

tdr_t init_tdr [static]
 

Initial value:

 {
        0,
        CMD_TDR | CMD_INTR,
        NOP_ADDR,
        0
}

Definition at line 346 of file ether1.c.

unsigned int net_debug = NET_DEBUG [static]
 

Definition at line 59 of file ether1.c.

Referenced by __initfunc(), am79c961_interrupt(), am79c961_probe1(), at1700_probe1(), detect_aui(), detect_bnc(), detect_tp(), eepro_interrupt(), eepro_open(), eepro_print_info(), eepro_probe1(), eepro_rx(), eepro_send_packet(), el16_interrupt(), el16_send_packet(), ether3_interrupt(), hardware_init(), hardware_send_packet(), init_82586_mem(), net_interrupt(), net_rx(), net_send_packet(), plip_error(), plip_interrupt(), plip_receive_packet(), plip_send_packet(), plip_tx_packet(), printEEPROMInfo(), seeq8005_init(), seeq8005_interrupt(), seeq8005_rx(), and send_test_pkt().

char* version = "ether1 ethernet driver (c) 1995 Russell King v1.05\n" [static]
 

Definition at line 69 of file ether1.c.