gianfar.h
来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 536 行 · 第 1/2 页
H
536 行
/* * drivers/net/gianfar.h * * Gianfar Ethernet Driver * Driver for FEC on MPC8540 and TSEC on MPC8540/MPC8560 * Based on 8260_io/fcc_enet.c * * Author: Andy Fleming * Maintainer: Kumar Gala (kumar.gala@freescale.com) * * Copyright (c) 2002-2004 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * Still left to do: * -Add support for module parameters * -Add support for ethtool -s * -Add patch for ethtool phys id */#ifndef __GIANFAR_H#define __GIANFAR_H#include <linux/config.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/string.h>#include <linux/errno.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/skbuff.h>#include <linux/spinlock.h>#include <linux/mm.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <linux/module.h>#include <linux/version.h>#include <linux/crc32.h>#include <linux/workqueue.h>#include <linux/ethtool.h>#include <linux/netdevice.h>#include <asm/ocp.h>#include "gianfar_phy.h"/* The maximum number of packets to be handled in one call of gfar_poll */#define GFAR_DEV_WEIGHT 64/* Number of bytes to align the rx bufs to */#define RXBUF_ALIGNMENT 64/* The number of bytes which composes a unit for the purpose of * allocating data buffers. ie-for any given MTU, the data buffer * will be the next highest multiple of 512 bytes. */#define INCREMENTAL_BUFFER_SIZE 512#define MAC_ADDR_LEN 6#define PHY_INIT_TIMEOUT 100000#define GFAR_PHY_CHANGE_TIME 2#define DEVICE_NAME "%s: Gianfar Ethernet Controller Version 1.1, "#define DRV_NAME "gfar-enet"extern const char gfar_driver_name[];extern const char gfar_driver_version[];/* These need to be powers of 2 for this driver */#ifdef CONFIG_GFAR_NAPI#define DEFAULT_TX_RING_SIZE 256#define DEFAULT_RX_RING_SIZE 256#else#define DEFAULT_TX_RING_SIZE 64#define DEFAULT_RX_RING_SIZE 64#endif#define GFAR_RX_MAX_RING_SIZE 256#define GFAR_TX_MAX_RING_SIZE 256#define DEFAULT_RX_BUFFER_SIZE 1536#define TX_RING_MOD_MASK(size) (size-1)#define RX_RING_MOD_MASK(size) (size-1)#define JUMBO_BUFFER_SIZE 9728#define JUMBO_FRAME_SIZE 9600/* Latency of interface clock in nanoseconds *//* Interface clock latency , in this case, means the * time described by a value of 1 in the interrupt * coalescing registers' time fields. Since those fields * refer to the time it takes for 64 clocks to pass, the * latencies are as such: * GBIT = 125MHz => 8ns/clock => 8*64 ns / tick * 100 = 25 MHz => 40ns/clock => 40*64 ns / tick * 10 = 2.5 MHz => 400ns/clock => 400*64 ns / tick */#define GFAR_GBIT_TIME 512#define GFAR_100_TIME 2560#define GFAR_10_TIME 25600#define DEFAULT_TX_COALESCE 1#define DEFAULT_TXCOUNT 16#define DEFAULT_TXTIME 400#define DEFAULT_RX_COALESCE 1#define DEFAULT_RXCOUNT 16#define DEFAULT_RXTIME 400#define TBIPA_VALUE 0x1f#define MIIMCFG_INIT_VALUE 0x00000007#define MIIMCFG_RESET 0x80000000#define MIIMIND_BUSY 0x00000001/* MAC register bits */#define MACCFG1_SOFT_RESET 0x80000000#define MACCFG1_RESET_RX_MC 0x00080000#define MACCFG1_RESET_TX_MC 0x00040000#define MACCFG1_RESET_RX_FUN 0x00020000#define MACCFG1_RESET_TX_FUN 0x00010000#define MACCFG1_LOOPBACK 0x00000100#define MACCFG1_RX_FLOW 0x00000020#define MACCFG1_TX_FLOW 0x00000010#define MACCFG1_SYNCD_RX_EN 0x00000008#define MACCFG1_RX_EN 0x00000004#define MACCFG1_SYNCD_TX_EN 0x00000002#define MACCFG1_TX_EN 0x00000001#define MACCFG2_INIT_SETTINGS 0x00007205#define MACCFG2_FULL_DUPLEX 0x00000001#define MACCFG2_IF 0x00000300#define MACCFG2_MII 0x00000100#define MACCFG2_GMII 0x00000200#define MACCFG2_HUGEFRAME 0x00000020#define MACCFG2_LENGTHCHECK 0x00000010#define ECNTRL_INIT_SETTINGS 0x00001000#define ECNTRL_TBI_MODE 0x00000020#define MRBLR_INIT_SETTINGS DEFAULT_RX_BUFFER_SIZE#define MINFLR_INIT_SETTINGS 0x00000040/* Init to do tx snooping for buffers and descriptors */#define DMACTRL_INIT_SETTINGS 0x000000c3#define DMACTRL_GRS 0x00000010#define DMACTRL_GTS 0x00000008#define TSTAT_CLEAR_THALT 0x80000000/* Interrupt coalescing macros */#define IC_ICEN 0x80000000#define IC_ICFT_MASK 0x1fe00000#define IC_ICFT_SHIFT 21#define mk_ic_icft(x) \ (((unsigned int)x << IC_ICFT_SHIFT)&IC_ICFT_MASK)#define IC_ICTT_MASK 0x0000ffff#define mk_ic_ictt(x) (x&IC_ICTT_MASK)#define mk_ic_value(count, time) (IC_ICEN | \ mk_ic_icft(count) | \ mk_ic_ictt(time))#define RCTRL_PROM 0x00000008#define RSTAT_CLEAR_RHALT 0x00800000#define IEVENT_INIT_CLEAR 0xffffffff#define IEVENT_BABR 0x80000000#define IEVENT_RXC 0x40000000#define IEVENT_BSY 0x20000000#define IEVENT_EBERR 0x10000000#define IEVENT_MSRO 0x04000000#define IEVENT_GTSC 0x02000000#define IEVENT_BABT 0x01000000#define IEVENT_TXC 0x00800000#define IEVENT_TXE 0x00400000#define IEVENT_TXB 0x00200000#define IEVENT_TXF 0x00100000#define IEVENT_LC 0x00040000#define IEVENT_CRL 0x00020000#define IEVENT_XFUN 0x00010000#define IEVENT_RXB0 0x00008000#define IEVENT_GRSC 0x00000100#define IEVENT_RXF0 0x00000080#define IEVENT_RX_MASK (IEVENT_RXB0 | IEVENT_RXF0)#define IEVENT_TX_MASK (IEVENT_TXB | IEVENT_TXF)#define IEVENT_ERR_MASK \(IEVENT_RXC | IEVENT_BSY | IEVENT_EBERR | IEVENT_MSRO | \ IEVENT_BABT | IEVENT_TXC | IEVENT_TXE | IEVENT_LC \ | IEVENT_CRL | IEVENT_XFUN)#define IMASK_INIT_CLEAR 0x00000000#define IMASK_BABR 0x80000000#define IMASK_RXC 0x40000000#define IMASK_BSY 0x20000000#define IMASK_EBERR 0x10000000#define IMASK_MSRO 0x04000000#define IMASK_GRSC 0x02000000#define IMASK_BABT 0x01000000#define IMASK_TXC 0x00800000#define IMASK_TXEEN 0x00400000#define IMASK_TXBEN 0x00200000#define IMASK_TXFEN 0x00100000#define IMASK_LC 0x00040000#define IMASK_CRL 0x00020000#define IMASK_XFUN 0x00010000#define IMASK_RXB0 0x00008000#define IMASK_GTSC 0x00000100#define IMASK_RXFEN0 0x00000080#define IMASK_RX_DISABLED ~(IMASK_RXFEN0 | IMASK_BSY)#define IMASK_DEFAULT (IMASK_TXEEN | IMASK_TXFEN | IMASK_TXBEN | \ IMASK_RXFEN0 | IMASK_BSY | IMASK_EBERR | IMASK_BABR | \ IMASK_XFUN | IMASK_RXC | IMASK_BABT)/* Attribute fields *//* This enables rx snooping for buffers and descriptors */#ifdef CONFIG_GFAR_BDSTASH#define ATTR_BDSTASH 0x00000800#else#define ATTR_BDSTASH 0x00000000#endif#ifdef CONFIG_GFAR_BUFSTASH#define ATTR_BUFSTASH 0x00004000#define STASH_LENGTH 64#else#define ATTR_BUFSTASH 0x00000000#endif#define ATTR_SNOOPING 0x000000c0#define ATTR_INIT_SETTINGS (ATTR_SNOOPING \ | ATTR_BDSTASH | ATTR_BUFSTASH)#define ATTRELI_INIT_SETTINGS 0x0/* TxBD status field bits */#define TXBD_READY 0x8000#define TXBD_PADCRC 0x4000#define TXBD_WRAP 0x2000#define TXBD_INTERRUPT 0x1000#define TXBD_LAST 0x0800#define TXBD_CRC 0x0400#define TXBD_DEF 0x0200#define TXBD_HUGEFRAME 0x0080#define TXBD_LATECOLLISION 0x0080#define TXBD_RETRYLIMIT 0x0040#define TXBD_RETRYCOUNTMASK 0x003c#define TXBD_UNDERRUN 0x0002/* RxBD status field bits */#define RXBD_EMPTY 0x8000#define RXBD_RO1 0x4000#define RXBD_WRAP 0x2000#define RXBD_INTERRUPT 0x1000#define RXBD_LAST 0x0800#define RXBD_FIRST 0x0400#define RXBD_MISS 0x0100#define RXBD_BROADCAST 0x0080#define RXBD_MULTICAST 0x0040#define RXBD_LARGE 0x0020
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?