内核版本: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
/*******************************/
#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地址,基地址或者中断引脚,配置成中断,基本的模式就是这样