大家好!
最近做DM9000AEP驱动时遇到问题如下:
dm9000 Ethernet Driver
dm9000: read wrong id 0x00000000
dm9000: read wrong id 0x00000000
dm9000: wrong id: 0x00000000
dm9000: not found (-19).
若跳过ID检测,则网卡绿灯长亮
SPV210核心板上自带的网卡可用,然而同样的驱动,扩展的网卡一直读不出ID及其他寄存器值
环境:
使用tiny210核心板,底板自制
系统用的linux-3.0.8,驱动使用的系统里面带的dm9000.c文件编译的
扩展的16位模式的DM9000AEP接在CS0上,复位引脚共用tiny210核心板上网卡的复位引脚,中断使用的EINT8
资源配置:
#define S5PV210_PA_DM9000_A (0x80001000)
#define S5PV210_PA_DM9000_F (S5PV210_PA_DM9000_A + 0x300C)
static struct resource mini210_dm9000_resources[] = {
[0] = {
.start = S5PV210_PA_DM9000_A,
.end = S5PV210_PA_DM9000_A + SZ_1K*4 - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = S5PV210_PA_DM9000_F,
.end = S5PV210_PA_DM9000_F + SZ_1K*4 - 1,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT(8),
.end = IRQ_EINT(8),
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
},
};
static void __init mini210_dm9000_init(void)
{
unsigned int tmp;
gpio_request(S5PV210_MP01(0), "nCS0");
s3c_gpio_cfgpin(S5PV210_MP01(0), S3C_GPIO_SFN(2));
gpio_free(S5PV210_MP01(0));
tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);
__raw_writel(tmp, S5P_SROM_BC0);
tmp = __raw_readl(S5P_SROM_BW);
tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS0__SHIFT);
tmp |= (1 << S5P_SROM_BW__NCS0__SHIFT);
__raw_writel(tmp, S5P_SROM_BW);
}
请求各位大师指点
qq:935568598 email:liyunlong_523@163.com
[ 此帖被liyunlong在2013-09-16 21:29重新编辑 ]