** This is the quasi-official and semi-temporary T13 email list server. **
translation long...
IDE_FEATURE_REG 0x1f1
IDE_NSECTOR_REG 0x1f2
IDE_SECTOR_REG 0x1f3
IDE_LCYL_REG 0x1f4
IDE_HCYL_REG 0x1f5
IDE_SELECT_REG 0x1f6
IDE_COMMAND_REG 0x1f7
IDE_CONTROL_REG 0x3f6
if (IDE_CONTROL_REG)
OUT_BYTE(drive->ctl, IDE_CONTROL_REG); /* clear nIEN */
OUT_BYTE(taskfile->feature, IDE_FEATURE_REG);
OUT_BYTE(taskfile->sector_count, IDE_NSECTOR_REG);
/* refers to number of sectors to transfer */
OUT_BYTE(taskfile->sector_number, IDE_SECTOR_REG);
/* refers to sector offset or start sector */
OUT_BYTE(taskfile->low_cylinder, IDE_LCYL_REG);
OUT_BYTE(taskfile->high_cylinder, IDE_HCYL_REG);
OUT_BYTE((taskfile->device_head & 0xE0) | drive->select.all, IDE_SELECT_REG);
OUT_BYTE(hobfile->control, IDE_CONTROL_REG); /* switch registers */
Do I need to wait for status of or something here?
Something is not switching the registers and with outer lba it fills the
non-hob registers with zeros and this is not cool!
OUT_BYTE(hobfile->sector_count, IDE_NSECTOR_REG);
OUT_BYTE(hobfile->sector_number, IDE_SECTOR_REG);
OUT_BYTE(hobfile->low_cylinder, IDE_LCYL_REG);
OUT_BYTE(hobfile->high_cylinder, IDE_HCYL_REG);
OUT_BYTE(hobfile->device_head, IDE_SELECT_REG);
ide_set_handler (drive, handler, WAIT_CMD, NULL);
OUT_BYTE(taskfile->command, IDE_COMMAND_REG);
Either the method is wrong or the order of operations is wrong,
regardless. I am looking for a clue.
Cheers,
Andre Hedrick
Linux ATA Development
--
If you have any questions or wish to unsubscribe send a
message to Hale Landis, [EMAIL PROTECTED] To post to
this list server send your message to [EMAIL PROTECTED]
For questions concerning Thistle Grove Industries or TGI's
list services please send email to [EMAIL PROTECTED]