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 + -
显示快捷键?