核心版本:linux2.6.28.7 中斷引腳是irq_eint7 具體的 自己看原理圖
/*******************************/
#include <mach/regs-gpio.h> //by bai
#include <mach/irqs.h> //用到writel和ioremap類的頭檔案
#include <mach/hardware.h>
unsigned char ne_def_eth_mac_addr[]={0x00,0x12,0x34,0x56,0x80,0x49}; //定義的mac位址
/* ------------------------------------------------------------------------ */
static void *bwscon;
static void *gpfcon;
static void *extint0;
static void *intmsk;
#define bwscon (0x48000000)//總線寬度和等待控制寄存器
#define gpfcon (0x56000050)//配置io口為中斷引腳
#define extint0 (0x56000088)//外部中斷控制寄存器 0 上升沿觸發還是下降沿觸發
#define intmsk (0x4a000008)//決定屏蔽哪個中斷源。被屏蔽的中斷源将不會服務 0 = 中斷服務可用 1 = 屏蔽中斷服務
bwscon=ioremap_nocache(bwscon,0x0000004);//決定 sram 是否對 bank 4 使用 ub/lb 0 = 未使用 ub/lb(引腳對應 nwbe[3:0]) 1 =
使用 ub/lb(引腳對應 nbe[3:0])決定 bank 4 的wait 狀态 0 = wait 禁止 1 = wait 使能
gpfcon=ioremap_nocache(gpfcon,0x0000004);
extint0=ioremap_nocache(extint0,0x0000004);
intmsk=ioremap_nocache(intmsk,0x0000004);
writel(readl(bwscon)|0xc0000,bwscon);
writel( (readl(gpfcon) & ~(0x3 << 14)) | (0x2 << 14), gpfcon); //配置成中斷引腳
writel( readl(gpfcon) | (0x1 << 7), gpfcon); // disable pull-up
writel( (readl(extint0) & ~(0xf << 28)) | (0x4 << 28), extint0); //rising edge
writel( (readl(intmsk)) & ~0x80, intmsk);
//ndev->dev_addr[i] = ior(db, i+dm9000_par); // by bai
ndev->dev_addr[i] = ne_def_eth_mac_addr[i];
總結:不管你用什麼核心版本的網卡驅動程式,自己移植網卡驅動的時候主要配置兩項,
一:設定mac位址,基位址或者中斷引腳,配置成中斷,基本的模式就是這樣