当前位置: 技术问答>linux和unix
linux IDE驱动问题
来源: 互联网 发布时间:2016-06-27
本文导语: 先谢谢大家帮忙!!! 版本2.6.21 系统能识别IDE硬盘但是在add_device的时候报错,芯片是6410 int probe_hwif_init_with_fixup(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif)) { probe_hwif(hwif); if (fixup) fixup(hwif); if (!hwif_init(hwif)) { ...
先谢谢大家帮忙!!!
版本2.6.21
系统能识别IDE硬盘但是在add_device的时候报错,芯片是6410
版本2.6.21
系统能识别IDE硬盘但是在add_device的时候报错,芯片是6410
int probe_hwif_init_with_fixup(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif))
{
probe_hwif(hwif);
if (fixup)
fixup(hwif);
if (!hwif_init(hwif)) {
printk(KERN_INFO "%s: failed to initialize IDE interfacen",
hwif->name);
return -1;
}
if (hwif->present) {
u16 unit = 0;
int ret;
for (unit = 0; unit drives[unit];
/* For now don't attach absent drives, we may
want them on default or a new "empty" class
for hotplug reprobing ? */
if (drive->present) {
ret = device_register(&drive->gendev);//这里进去就没出来
if (ret gendev);这里的参数drive->gendev初始化的地方没找到
int device_register(struct device *dev)
{
device_initialize(dev);
return device_add(dev);//就是在这里面进入了死循环
}
打印信息如下:
##### s3c_ide_build_dmatable
##### s3c_ide_build_sglist
##### hwif->sg_nents 1
data: 5582f000 00001000
total size: 00001000, 1
rw: 5582f000 00001000
temp2: 00000058
wait_for_dev_ready: 0
2:S3C_ATA_CFG = 0x00000388
$WDWDBG$: set_trans_command founcation
00000000, 00000003
left: 00000ffe, 00001000
hdb: IRQ lost
hdb: lost interrupt
##### s3c_ide_dma_end
left: 00000ffe, 00001000
$WDWDBG$: s3c_ide_dma_end function
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
。。。。。。。。。
后面就一直打印这个,我看了代码,是6410的FIFO状态寄存器高三位不为0就一直检测。知道为0
我曾试过在s3c_ide_probe()函数开始的地方初始化那个寄存器,但是那样后就不认识IDE了
|
这个针对具体的6410芯片的驱动,估计大多数人都没有接触过,我也一样没用过
|
太具体了,帮不到忙了。