⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uclinux040408.44b0.patch

📁 44b0x处理器uclinux内核编译补丁
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
+#define REG_LineST		0x0134+#define REG_SelfST		0x0136+#define REG_BusST		0x0138+#define REG_TDR			0x013C+++/*+* Initiate transmit registers+*/+#define REG_TxCommand	0x0144+#define REG_TxLength	0x0146+++/*+* Address filter registers+*/+#define REG_LAF			0x0150+#define REG_IA			0x0158+++/*+* Frame location register+*/+#define REG_RxStatus	0x0400+#define REG_RxLength	0x0402+#define REG_RxFrame		0x0404+#define REG_TxFrame		0x0A00+++/*--- CS8900A register bit defines ---*/+++/*+* Bits of bus interface register+*/+/* ID */+#define ID_CODE			0x630E+#define ID_SIGNATURE	0x3000+#define REV_B			0x0700+#define REV_C			0x0800+#define REV_D			0x0900+#define REV_F			0x0A00+/* INT number */+#define INTRQ0			0+#define INTRQ1			1+#define INTRQ2			2+#define INTRQ3			3+#define ALL_INTRQ_HI	4+/* DMA number */+#define DMRQ0			0+#define DMRQ1			1+#define DMRQ2			2+#define ALL_DMRQ_HI		3+/* EEPROM command */+#define OB0				(1<<8)+#define OB1				(1<<9)+#define ELSEL			(1<<10)+++/*+* Bits of status and control registers+*/+#define LOW_BITS_MASK	0x001F+/* RxCFG */+#define Skip_1			(1<<6)+#define StreamE			(1<<7)+#define RxOKiE			(1<<8)+#define RxDMAonly		(1<<9)+#define AutoRxDMAE		(1<<10)+#define BufferCRC		(1<<11)+#define CRCerroriE		(1<<12)+#define RuntiE			(1<<13)+#define ExtradataiE		(1<<14)+#define RxCFG_LOW		(0x03)+/* RxCTL */+#define IAHashA			(1<<6)+#define PromiscuousA	(1<<7)+#define RxOKA			(1<<8)+#define MulticastA		(1<<9)+#define IdividualA		(1<<10)+#define BroadcastA		(1<<11)+#define CRCerrorA		(1<<12)+#define RuntA			(1<<13)+#define ExtradataA		(1<<14)+#define RxCTL_LOW		(0x05)+/* TxCFG */+#define Loss_of_CRSiE	(1<<6)+#define SQErroriE		(1<<7)+#define TxOKiE			(1<<8)+#define Out_of_windowiE	(1<<9)+#define JabberiE		(1<<10)+#define AnycolliE		(1<<11)+#define _16colliE		(1<<15)+#define TxCFG_LOW		(0x07)+/* TxCMD */+#define TxStart			(3<<6)+#define TxStart6		(1<<6)+#define TxStart7		(1<<7)+#define Force			(1<<8)+#define Onecoll			(1<<9)+#define InhibitCRC		(1<<12)+#define TxPadDis		(1<<13)+#define TxCMD_LOW		(0x09)+/* BufCFG */+#define SWint_X			(1<<6)+#define RxDMAiE			(1<<7)+#define Rdy4TxiE		(1<<8)+#define TxUnderruniE	(1<<9)+#define RxMissiE		(1<<10)+#define Rx128iE			(1<<11)+#define TxColOvfiE		(1<<12)+#define MissOvfloiE		(1<<13)+#define RxDestiE		(1<<15)+#define BufCFG_LOW		(0x0B)+/* LineCTL */+#define SerRxON			(1<<6)+#define SerTxON			(1<<7)+#define AUIonly			(1<<8)+#define AutoAUI_10BT	(1<<9)+#define ModBackOffE		(1<<11)+#define PolarityDis		(1<<12)+#define _2_partDefDis	(1<<13)+#define LoRxSquelch		(1<<14)+#define LineCTL_LOW		(0x13)+/* SelfCTL */+#define RESET			(1<<6)+#define SWSuspend		(1<<8)+#define HWSleepE		(1<<9)+#define HWStandbyE		(1<<10)+#define HC0E			(1<<12)+#define HC1E			(1<<13)+#define HCB0			(1<<14)+#define HCB1			(1<<15)+#define SelfCTL_LOW		(0x15)+/* BusCTL */+#define ResetRxDMA		(1<<6)+#define DMAextend		(1<<8)+#define UseSA			(1<<9)+#define MemoryE			(1<<10)+#define DMABurst		(1<<11)+#define IOCHRDYE		(1<<12)+#define RxDMAsize		(1<<13)+#define EnableIRQ		(1<<15)+#define BusCTL_LOW		(0x17)+/* TestCTL */+#define DisableLT		(1<<7)+#define ENDECloop		(1<<9)+#define AUIloop			(1<<10)+#define DisableBackoff	(1<<11)+#define FDX				(1<<14)+#define TestCTL_LOW		(0x19)+/* ISQ */+#define RegNum			(0x3f<<0)+#define RegContent		(0x3ff<<6)+#define ISQ_LOW			(0x00)+/* RxEvent */+#define IAHash			(1<<6)+#define Dribblebits		(1<<7)+#define RxOK			(1<<8)+#define Hashed			(1<<9)+#define IdividualAdr	(1<<10)+#define Broadcast		(1<<11)+#define CRCerror		(1<<12)+#define Runt			(1<<13)+#define Extradata		(1<<14)+#define RxEvent_LOW		(0x04)+/* TxEvent */+#define Loss_of_CRS		(1<<6)+#define SQError			(1<<7)+#define TxOK			(1<<8)+#define Out_of_window	(1<<9)+#define Jabber			(1<<10)+#define Num_of_TxColl	(0xf<<11)+#define _16coll			(1<<15)+#define TxEvent_LOW		(0x08)+/* BufEvent */+#define SWint			(1<<6)+#define RxDMAFrame		(1<<7)+#define Rdy4Tx			(1<<8)+#define TxUnderrun		(1<<9)+#define RxMiss			(1<<10)+#define Rx128			(1<<11)+#define RxDest			(1<<15)+#define BufEvent_LOW	(0x0C)+/* RxMISS */+#define RxMissCount		(0x3ff<<6)+#define RxMISS_LOW		(0x10)+/* TxCOL */+#define TxColCount		(0x3ff<<6)+#define TxCOL_LOW		(0x12)+/* LineST */+#define LinkOK			(1<<7)+#define AUI				(1<<8)+#define _10BT			(1<<9)+#define PolarityOK		(1<<12)+#define CRS				(1<<14)+#define LineST_LOW		(0x14)+/* SelfST */+#define _3_3VActive		(1<<6)+#define INITD			(1<<7)+#define SIBUSY			(1<<8)+#define EEPROMpresent	(1<<9)+#define EEPROMOK		(1<<10)+#define ELpresent		(1<<11)+#define EEsize			(1<<12)+#define SelfST_LOW		(0x16)+/* BusST */+#define TxBidErr		(1<<7)+#define Rdy4TxNOW		(1<<8)+#define BusST_LOW		(0x18)+/* TDR */+#define AUIDelay		(0x3ff<<6)+#define TDR_LOW			(0x1C)+++/*+* I/O space operation+*/+#define IO_RX_TX_DATA0			0x0000+#define IO_RX_TX_DATA1			0x0002+#define IO_TX_COMMAND			0x0004+#define IO_TX_LENGTH			0x0006+#define IO_ISQ					0x0008+#define IO_PACKETPAGE_POINTER	0x000A+#define IO_PACKETPAGE_DATA0		0x000C+#define IO_PACKETPAGE_DATA1		0x000E+++/*+* ISQ Event+*/+#define ISQ_RxEvent				0x04+#define ISQ_TxEvent				0x08+#define ISQ_BufEvent			0x0C+#define ISQ_RxMISS				0x10+#define ISQ_TxCOL				0x12+#define ISQ_MASK				0x3F+++#endif /* __EKII_CS8900A_H__ */diff -Nur uClinux-dist.040408.original/linux-2.4.x/drivers/net/rtl8019.c uClinux-dist/linux-2.4.x/drivers/net/rtl8019.c--- uClinux-dist.040408.original/linux-2.4.x/drivers/net/rtl8019.c	1970-01-01 08:00:00.000000000 +0800+++ uClinux-dist/linux-2.4.x/drivers/net/rtl8019.c	2005-03-29 09:57:34.734375000 +0800@@ -0,0 +1,408 @@+/*+ * port to 16bit/8bit remote dma mode lq@cdgwbn.com.cn + * linux/deriver/net/Rtl8019as.c+ * Ethernet driver for Samsung 44B0+ * Copyright (C) 2003 antiscle <hzh12@163.net>+ */++#include <linux/config.h>+#include <linux/module.h>++#include <linux/init.h>+#include <linux/sched.h>+#include <linux/kernel.h>+#include <linux/slab.h>		// kmalloc()+#include <linux/errno.h>	// error codes+#include <linux/types.h>	// size_t+#include <linux/interrupt.h>	// mark_bh+#include <linux/in.h>+#include <linux/netdevice.h>    // net_device+#include <linux/etherdevice.h>+#include <linux/ip.h>+#include <linux/tcp.h>+#include <linux/skbuff.h>+#include <linux/types.h>+#include <asm/irq.h>+#include "rtl8019.h"++#ifdef	DEBUG+#define TRACE(str, args...)	printk(str, ## args)+#else+#define TRACE(str, args...)+#endif++typedef unsigned char U8;+#define	outportb(port, data)	*((volatile u8 *)(port)) = (u8)(data)+#define	inportb(port)			*((volatile u8 *)(port))+++#define	outportw(port, data)	*((volatile u16 *)(port)) = (u16)(data)+#define	inportw(port)		*((volatile u16 *)(port))++#define	ETH_FRAME_LEN	1514++#define	RPSTART	0x4c+#define	RPSTOP	0x80+#define	SPSTART	0x40++static int timeout = 100;	// tx watchdog ticks 100 = 1s+static char *version = "S3CEV40 board  Rtl8019as driver start\n";++/*+ * This structure is private to each device. It is used to pass+ * packets in and out, so there is place for a packet+ */+struct nic_8019_priv {+	struct net_device_stats stats;	+	spinlock_t lock;+	struct sk_buff *skb;+};++/*****************************************************************************/+static u8 rBNRY;+static u8 SrcMacID[ETH_ALEN] = {0x00,0x06,0x98,0x02,0x7E,0x8F};++static void SetRegPage( u8 PageIdx)+{+	 u8 temp;+	+	temp = inportb(BaseAddr);	+	temp = (temp&0x3b)|(PageIdx<<6);						+	outportb(BaseAddr, temp);+}+/*+static void SetMacID()+{+	int i;+	+	SetRegPage(1);+	for(i=0; i<6; i++)+		outportb(PAR0+i*2, SrcMacID[i]);++}+*/++/*+ * rx+ */+static void nic_8019_rx(int irq, void *dev_id, struct pt_regs *regs)+{+	u8 RxPageBeg, RxPageEnd;+	u8 RxNextPage;+	u8 RxStatus;+	u8 *data;+	int i, RxLength, RxLen;+	+	struct sk_buff *skb;	+	struct net_device *dev = (struct net_device *) dev_id;+	struct nic_8019_priv *priv = (struct nic_8019_priv *) dev->priv;++	TRACE("TX/RX Interupt!\n");+	spin_lock(&priv->lock);+	SetRegPage(0);+	outportb(BNRY, rBNRY);		//???+	RxStatus = inportb(ISR);+	if(RxStatus&2)+	{+	  outportb(ISR, 0x2);		//clr TX interupt+	  priv->stats.tx_packets++;	+	  TRACE("transmit one packet complete!\n");+	}+	if(RxStatus&1)+	{+	  TRACE("Receivex packet....\n");		+	  outportb(ISR, 0x1);	         //clr Rx interupt	+	  SetRegPage(1);+	  RxPageEnd = inportb(CURR);++	  SetRegPage(0);	+	  RxPageBeg = rBNRY+1;+	  if(RxPageBeg>=RPSTOP)+	    RxPageBeg = RPSTART;		+	  outportb(BaseAddr, 0x22);	// stop	remote dma+	  +	  //outport(RSAR0, RxPageBeg<<8);+	  //outport(RBCR0, 256);		+	  outportb(RSAR0, 0);+	  outportb(RSAR1, RxPageBeg);+	  outportb(RBCR0, 4);+	  outportb(RBCR1, 0);	+	  outportb(BaseAddr, 0xa);++	  RxStatus   = inportb(RWPORT);+	  RxNextPage = inportb(RWPORT);	+	  RxLength   = inportb(RWPORT);+	  RxLength  |= inportb(RWPORT)<<8;+	  +	  TRACE("\nRxBeg = %x, RxEnd = %x,  nextpage = %x,  size = %i\n", RxPageBeg, RxPageEnd, RxNextPage, RxLength);		+	  if (RxLength == 0)+	  {+	  	  TRACE("RxLength == 0 \n");+	      return;	+	  }+	+	  RxLength -= 4;+	  if(RxLength>ETH_FRAME_LEN)+	    {+	      if(RxPageEnd==RPSTART)+			rBNRY = RPSTOP-1;+	      else+			rBNRY = RxPageEnd-1;						+	      outportb(BNRY, rBNRY);+	      TRACE("RxLength more long than %x\n", ETH_FRAME_LEN);+	      return;		+	    }+	  skb = dev_alloc_skb(RxLength);+	  if(!skb) +	    {+	      TRACE("Rtl8019as eth: low on mem - packet dropped\n");+	      priv->stats.rx_dropped++;+	      return;+	    }+		+	  skb->dev = dev;		+	  skb_reserve(skb, 2);+	  skb_put(skb, RxLength);+  	  data = (u8 *)skb->data;++	  //		eth_copy_and_sum(skb, data, len, 0);+	  outportb(RSAR0, 4);+	  outportb(RSAR1, RxPageBeg);+	  outportb(RBCR0, RxLength);+	  outportb(RBCR1, RxLength>>8);	+	  outportb(BaseAddr, 0xa);+	  i = 4;+	  data -= 4;+	  RxLen=RxLength;+	  for(; RxLen--;)+	  {+			if(!(i&0xff))+			{+				outportb(BNRY, RxPageBeg);				+			  	RxPageBeg++;+		  		if(RxPageBeg>=RPSTOP)+		    		RxPageBeg = RPSTART;					+			}+			data[i++] = inportb(RWPORT);		+			TRACE("%2X,", data[i-1]);+	  }+		TRACE("\n");+		outportb(BNRY, RxPageBeg);	+		rBNRY = RxPageBeg;+		+		skb->protocol = eth_type_trans(skb, dev);+		TRACE("\nprotocol=%x\n", skb->protocol);+		priv->stats.rx_packets++;+		priv->stats.rx_bytes +=RxLength;+		netif_rx(skb);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -