What do the warnings mean? :-)
That your drive does not support set transfer mode/speed command at
all, or that value which kernel tried is not supported by the drive...
I would guess that some contractor wrote firmware for device for PQI in one day for $100, and before that somebody else designed ATA-SD bridge for PQI for another $100.
I guess that these two printk()s happen because drive claims to support pio0,1,2 - so Linux tries pio2, drive refuses, Linux tries
pio1, drive refuses, and finally as pio0 is default, that one gets used. Which is more or less confirmed by having no '*' sign in front of any pio - with "real" drives you should see '*' in front of one of listed dma/pio modes.
You should ask reseller how they can ship drive which does not conform to any ATA standard...
I took drivers/ide/pci/via82cxxx.c and sprinkled ENTER/EXIT printk's.
http://lxr.linux.no/source/drivers/ide/pci/via82cxxx.c
via82cxxx_tune_drive() and via82cxxx_ide_dma_check() both call via_set_drive() which calls ide_config_drive_speed().
http://lxr.linux.no/source/drivers/ide/ide-iops.c#L769
if (error)
{
(void) ide_dump_status(drive, "set_drive_speed_status", stat);
printk(KERN_INFO "EXIT %s error\n", __func__);
return error;
}
Does someone know why error is not set to 0?
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: IDE controller at PCI slot 0000:00:07.1
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: VIA vt82c686b (rev 40) IDE UDMA100 controller on pci0000:00:07.1
ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: PQI IDE DiskOnModule, ATA DISK drive
ENTER via82cxxx_tune_drive
ENTER via_set_drive
ENTER ide_config_drive_speed
hda: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }
hda: set_drive_speed_status: error=0x04 { DriveStatusError }
EXIT ide_config_drive_speed error
ENTER via_set_speed
EXIT via_set_speed
EXIT via_set_drive
EXIT via82cxxx_tune_drive pio == 255
ENTER via82cxxx_ide_dma_check
ENTER via_set_drive
ENTER ide_config_drive_speed
hda: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }
hda: set_drive_speed_status: error=0x04 { DriveStatusError }